Ich liebe diese einfache Chiffre, es macht so viel Spaß, nicht ganz von Menschen lesbare Wörter zu lesen und die Lücken zu füllen ...
Ot wes thi bist uf tomis, ot wes thi wurst uf tomis,
ot wes thi egi uf wosdum, ot wes thi egi uf fuuloshniss,
ot wes thi ipuch uf biloif, ot wes thi ipuch uf oncridaloty,
ot wes thi siesun uf loght, ot wes thi siesun uf derkniss,
ot wes thi sprong uf hupi, ot wes thi wontir uf dispeor,
wi hed ivirythong bifuri as, wi hed nuthong bifuri as,
wi wiri ell guong dorict tu hievin, wi wiri ell guong dorict thi uthir wey –
on shurt, thi piroud wes su fer loki thi prisint piroud,
thet sumi uf ots nuosoist eathurotois onsostid un ots biong riciovid,
fur guud ur fur ivol, on thi sapirletovi digrii uf cumperosun unly.
Die Regeln sind sehr einfach:
- Akzeptieren Sie Text als Eingabe (ASCII-Zeichen, Groß- / Kleinbuchstaben und Interpunktion).
- Drehen Sie für jeden Vokal zum nächsten Vokal oder zurück zum Anfang.
- a => e
- e => i
- i => o
- o => u
- u => a
- Vokale in Großbuchstaben bleiben in Großbuchstaben, Vokale in Kleinbuchstaben bleiben in Kleinbuchstaben.
- Geben Sie den Text nach diesen Konvertierungen aus.
- Keine Notwendigkeit, Akzente zu setzen.
- Alle anderen Zeichen sollten unverändert bleiben.
- Versuchen Sie es mit der kleinsten Anzahl von Bytes.
- Jede alte Sprache, die du magst.
Testfälle
It was the best of times, it was the worst of times,
it was the age of wisdom, it was the age of foolishness,
it was the epoch of belief, it was the epoch of incredulity,
it was the season of light, it was the season of darkness,
it was the spring of hope, it was the winter of despair,
we had everything before us, we had nothing before us,
we were all going direct to heaven, we were all going direct the other way –
in short, the period was so far like the present period,
that some of its noisiest authorities insisted on its being received,
for good or for evil, in the superlative degree of comparison only.
Aus:
Ot wes thi bist uf tomis, ot wes thi wurst uf tomis,
ot wes thi egi uf wosdum, ot wes thi egi uf fuuloshniss,
ot wes thi ipuch uf biloif, ot wes thi ipuch uf oncridaloty,
ot wes thi siesun uf loght, ot wes thi siesun uf derkniss,
ot wes thi sprong uf hupi, ot wes thi wontir uf dispeor,
wi hed ivirythong bifuri as, wi hed nuthong bifuri as,
wi wiri ell guong dorict tu hievin, wi wiri ell guong dorict thi uthir wey –
on shurt, thi piroud wes su fer loki thi prisint piroud,
thet sumi uf ots nuosoist eathurotois onsostid un ots biong riciovid,
fur guud ur fur ivol, on thi sapirletovi digrii uf cumperosun unly.
Im:
The quick brown fox jumps over the lazy dog.
Aus:
Thi qaock bruwn fux jamps uvir thi lezy dug.
Im:
Home is where the heart is.
Aus:
Humi os whiri thi hiert os.
Im:
Boaty McBoatface
Aus:
Buety McBuetfeci
Im:
AEIOUaeiou
Aus:
EIOUAeioua
Im:
Programming Puzzles And Code Golf
Aus:
Prugremmong Pazzlis End Cudi Gulf
code-golf
text-processing
AJFaraday
quelle
quelle
Antworten:
Stax , 7 Bytes
Führen Sie es aus und debuggen Sie es
Probieren Sie es online!
Erklärung (ausgepackt)
Könnte in der Lage sein, mehr zu sparen, wird es weiter versuchen.
quelle
MS-SQL, 51 Bytes
Funktioniert mit SQL 2017 oder höher:
Die neue Funktion ersetzt
TRANSLATE
einzelne Zeichen und ist daher ideal für diese Herausforderung geeignet.Die Eingabe erfolgt über eine bereits vorhandene Tabelle t mit Varchar - Spalte v , je unseren IO Regeln .
In diesem Fall muss die Tabelle mit einer Sortierung erstellt werden, bei der zwischen Groß- und Kleinschreibung unterschieden wird , entweder indem sie auf einem Server mit Groß- und Kleinschreibung ausgeführt wird, oder indem das
COLLATE
Schlüsselwort verwendet wird (das nicht zur Gesamtsumme der Zeichen gezählt wird):EDIT : SSMS kann das lange Zitat oben bei der Rückkehr des Ergebnisses in einem „Ergebnisse in Text“ Fenstern abgeschnitten, dies ist eine Client - Einstellung, nicht um einen Fehler in meinem Programm .
Zum Korrigieren gehen Sie zu
Tools > Options > Query Results > SQL Server > Results to Text
"Maximale Anzahl der in jeder Spalte angezeigten Zeichen" und erhöhen Sie diese.quelle
REPLACE
einigen Tricks verschachteln :REPLACE(TRANSLATE(v,'1234567890','xxxxxxxxxx'),'x','')
Zum Beispiel, um alle Ziffern aus einer Zeichenfolge zu entfernen. Immer noch lang, aber viel kürzer als 10 verschachtelteREPLACE
s.Bash + Coreutils , 24
Probieren Sie es online!
quelle
Haskell , 52 Bytes
Probieren Sie es online!
Lynn hat mir zwei Bytes gespart, indem sie darauf hingewiesen hat, dass
!!0
es kürzer ist alshead
.Erläuterung
Wenn Sie noch nie in Haskell programmiert haben, wird dies wahrscheinlich wie ein Haufen Quatsch aussehen. Also lasst es uns zuerst loswerden und dann aufschlüsseln:
Zuerst haben wir eine Funktion
!
, die einen Strings
und ein Zeichen nimmtc
. Unsere ersten Musterübereinstimmungen akzeptieren Eingaben, wenn die Zeichenfolge nicht leer ist. Wenn der String nicht leer ist, vergleichen wir sein erstes Zeichen mitc
. Wenn das erste Zeichen nicht gleich ist,c
werfen wir es und rufen!
es mit dem Rest der Zeichenfolge und erneut aufc
. Wenn es gleich ist, geben wir das zweite Zeichen in der Zeichenkette zurück.Unsere nächste Musterübereinstimmung fängt die Zeichenfolge in allen anderen Fällen ab, dh wenn die Zeichenfolge leer ist. In diesem Fall kehren wir einfach zurück
c
.Alles in allem nimmt diese Funktion ein Zeichen
c
und einen Strings
und gibt das Zeichen nach dem ersten Auftreten vonc
in zurücks
. Wenn wir dies mit bestehenaeiouaAEIOUA
, wird unsere Verschlüsselung für ein einzelnes Zeichen durchgeführt. Um unsere gesamte Funktion zu erstellen, müssen wir dies auf die Zeichenfolge abbilden.quelle
Netzhaut ,
1098 BytesProbieren Sie es online!
1 Byte gespart dank Neil! Und noch ein Dankeschön an Martin!
Die neue Version der Netzhaut hat Vokalklassen, was das Ergebnis etwas kürzer macht. Die Transliteration verwendet auch die "andere" Klasse. So
to
sieht die Klasse aus wie "aeiouAEIOUA", während diefrom
Klasse aussieht wie "uaeiouAEIOUA"Dies verursacht keine Probleme, da das zweite
u
MappingA
niemals durchgeführt wird, dau
es bereits gemappt wurdea
.quelle
T`_o`uvUV
._
Set würde es buchstäblich behandeln, aber es sieht so aus, als würde es das nicht tun.Y
viel ausprobiert, also werde ich es morgen versuchen .Perl 5 + -p,
2423 BytesProbieren Sie es online aus
-1 Byte dank @DomHastings
quelle
-p
mehr als +1, sondern gehen davon aus, dass diese Antwort in "Perl 5 +-p
" steht.;
als Trennzeichen verwenden, können Sie ein Byte speichern!Python 3, 62 Bytes
Erstellen Sie eine Übersetzungstabelle (Wörterbuch) mit
str
der statischenstr.maketrans
Methode von. Übersetzen Sie relevante Zeichen in ihr Zielzeichen.quelle
x
Parameter. In Python benötigen Lambda-Funktionen keine return-Anweisung.C
8576676564 BytesPortierung der Java- Antwort von Kevin Cruijssen . Probieren Sie es hier online aus .
Dank an Kevin Cruijssen für das Golfen von 9 Bytes, an Christoph für das Golfen von 11 Bytes und an ceilingcat für das Golfen von 1 Byte.
Ungolfed-Version:
quelle
\0
. Dies funktioniert auch nicht, wenn es mit clang kompiliert wird: tio.run/##S9ZNzknMS///…const char *res = strchr("AEIOU...", 0)
Gibt einen Zeiger auf das Abschlusszeichen im Zeichenfolgenliteral zurück.putchar(res[1])
Liest über das Ende des String-Literal hinaus. Mit gcc scheint es zufällig ein weiteres Null-Byte zu finden und es funktioniert, aber mit clang bekommt es ein73 'I'
(wahrscheinlich ausmain
dem String-Literal "Es war ...", aber ich habe das asm nicht überprüft). Soputchar
kehrt nicht 0, und wir schließlich segfault wenn*c++
ein nicht zugeordneten Seite liest.f(char*c){for(;*c;)putchar(1[strchr("AEIOUAaeioua",*c++)?:c-2]);}
. Das ist alles für den Moment, denke ich.a[b]==*(a+b)==*(b+a)==b[a]
. Daher1[...]==(...)[1]
R , 43 Bytes
Probieren Sie es online!
Hier ist meine Lösung
cat
: Probieren Sie es online aus!quelle
Jelly , 11 Bytes
Probieren Sie es online!
quelle
Python 2 ,
796867 Bytes-1 Byte dank @ArnoldPalmer
Probieren Sie es online!
quelle
JavaScript (ES6), 60 Byte
Probieren Sie es online!
quelle
s=>s.replace(/./g,c=>'auoieaAUOIEA'.match(".(?=${c})")||c)
only.
=>unlya
Ruby
-p
, 31 BytesProbieren Sie es online!
quelle
Pyth, 17 Bytes
Probieren Sie es hier aus
quelle
Japt 2.0,
2521 BytesIch hatte Spaß beim Golfen mit Shaggy.
Führen Sie es hier aus.
quelle
S.p(f)
.Java 10,
9787 Bytes-10 Bytes, nachdem er von @Arnauld 's JavaScript-Antwort inspiriert wurde (seine 60-Bytes-Version) .
Probieren Sie es online aus.
Erläuterung:
quelle
05AB1E ,
141311 BytesProbieren Sie es online!
quelle
|
und»
: Probieren Sie es online aus: 11 Bytes .Retina 0.8.2 , 20 Bytes
Probieren Sie es online! Link enthält Testfälle.
quelle
APL + WIN, 55 Bytes
Eingabeaufforderungen für Eingabezeichenfolge:
quelle
Mumps, 38 Bytes
Mumps fügt normalerweise kein Wagenrücklaufzeichen hinzu, da ich keine Anforderung sah, die Eingabe von der Ausgabe zu trennen, sieht es beim ersten Start etwas seltsam aus. Die Ausgabe für den letzten Testfall sieht beispielsweise folgendermaßen aus:
Wenn Sie einen Wagenrücklauf hinzufügen möchten, fügen Sie zwei Bytes hinzu:
quelle
Vim + tpope / vim-abolish , 30 Bytes
Alternative Lösung, auch 30 Bytes:
Laut Meta können VIM-Antworten Plugins ohne Byte-Einbußen verwenden. Dies ist keine vim Antwort, sondern eine vim + abolish Antwort.
Abolish ist ein äußerst nützliches Plugin. In diesem Abschnitt der README-Datei wird genau beschrieben, wie dieser Befehl (der
Subvert
Befehl) funktioniert.quelle
CJam ,
2919 BytesProbieren Sie es online!
-10 Bytes dank @Peter Taylor
Erläuterung:
quelle
q
eher verwenden alsl
für die Eingabe. Der erste Testfall scheint mehrzeilig zu sein. Sie können auch verkürzen"eioua"
zu_1m<
. In der Tat können Sie weiter gehen und Golf spielenq"aeioua"_eu+_1m<er
AutoHotkey , 24 Bytes
AuotHotkey ersetzt Buchstaben automatisch in Groß- und Kleinschreibung.
quelle
PHP, 90 Bytes
Probieren Sie es online aus
Code
Erläuterung
75 Bytes wenn mit
php -r
using gelaufen$argv
quelle
J , 33 Bytes
Probieren Sie es online!
quelle
str , 18 bytes
Probieren Sie es online!
Erläuterung
quelle
PHP, 38 Bytes
Ganz einfach, nicht sehr kreativ, verwendet
strtr
, um die Vokale zu ersetzen:Laufen Sie mit
echo '<input>' | php -nF <filename>
oder versuchen Sie es online .quelle
argn
? Wenn ja, dann ist das nicht gültig; Sie müssen die Zeichenfolge als Argument übergeben und$argv1]
stattdessen verwenden.-F
Flag ausführen , funktioniert es mit Eingaben in der Befehlszeile. In den PHP-Dokumenten zu Optionen :-F --process-file PHP file to execute for every input line. Added in PHP 5.
Die Definition der Online-Variablen "Try it" ist nur deshalb so, weil einige Leute PHP nicht lokal installiert haben und ich das-F
Flag in TIO nicht zum Laufen bringen konnte.q / kdb +,
3633 BytesLösung:
Beispiele:
Erläuterung:
Finden Sie den Index der Vokale heraus, fügen Sie einen hinzu, um ihn zum nächsten zu verschieben, und indizieren Sie ihn. Denken Sie immer noch, dass dieser Ansatz erheblich verbessert werden kann ...
Bonus:
Meine alte ** 36-Byte (()) -Lösung, die ich für ziemlich cool halte, die ich aber erst in die Liste aufnehmen muss, um wettbewerbsfähig zu sein:
quelle
Kohle , 35 Bytes
Probieren Sie es online!
Naive Methode.
Erläuterung:
quelle
PHP , 76 Bytes.
Hör zu!
Dies war das kürzeste Mal, dass ich dies in PHP konnte.
quelle