Vokale Reim: Äpfel und Bananen
Es gibt ein traditionelles Kinderlied, das denselben Text immer wieder wiederholt, nur jedes Mal, wenn jeder Vokal durch einen zufälligen Vokal ersetzt wird, aber über die aktuelle Strophe konstant.
Herausforderung
Das Ziel besteht darin, den kürzesten Code vorzuschlagen, der eine solche Transformation für einen Eingabetext ausführt.
Regeln
- Sie müssen den Reim so oft drucken, wie verschiedene Vokale darin sind.
- Jeder Ausdruck muss durch einen Zeilenumbruch getrennt werden (plattformspezifische Kombination von
\n
und\r
wird akzeptiert). i
Ersetzen Sie für die Iteration jeden Vokal durch den jeweils andereni
Vokal im Originaltext.- Der Eingabetext ist eine Folge druckbarer ASCII - Zeichen (Bereich
[32, 126]
. - Die Eingabe enthält keine eingebetteten Zeilenumbrüche.
- Es dürfen nur Vokale betroffen sein, andere müssen genau als Eingabe ausgegeben werden.
- Es zählen nur Vokalzeichen: Nasenvokale, die wie Vokale klingen (wie im französischen "Tim" ), dürfen nicht als ein einziger Vokal behandelt werden.
- Groß- / Kleinschreibung ist für die Ausgabe von Bedeutung, ist jedoch positionsabhängig (das Ersetzen eines Großbuchstabenvokals erfolgt durch den Großbuchstabenersatzvokal)
- Vokale in Großbuchstaben unterscheiden sich nicht von denen in Kleinbuchstaben (dh
a
<=>A
) - Aufeinanderfolgende Vokale werden immer separat betrachtet (dh
Boat
ergibt beidesBoot
undBaat
) - Da der Buchstabe
y
entweder einen Vokal oder einen Konsonantensound darstellt (wir sprechen Englisch), ist es zulässig, ihn als Vokal oder Konsonanten zu behandeln. In den Antworten muss jedoch ausdrücklich angegeben werden, ob siey
als Vokal behandelt werden oder nicht.
Beispiele:
Hallo Welt
Hello world!
gibt:
Helle werld!
Hollo world!
Auszug aus dem französischen Originaltext (übersetzt) mit y
Vokalhandhabung:
An elephant that was rambling all gently in the woods...
gibt:
An alaphant that was ramblang all gantla an tha waads...
En elephent thet wes rembleng ell gentle en the weeds...
In iliphint thit wis rimbling ill gintli in thi wiids...
Yn ylyphynt thyt wys rymblyng yll gyntly yn thy wyyds...
On olophont thot wos romblong oll gontlo on tho woods...
Beachten Sie das Verhalten bei Vokalen in Großbuchstaben: Die Groß- und Kleinschreibung wird an ihrem Index festgehalten (Regeln 8 und 9).
Vokalloses Beispiel
Eingabe, die keinen Vokal enthält, wie:
lgn@hst:~$ rm -rf ./* ~ /
darf keine Ausgabe oder einen einzelnen Zeilenumbruch erzeugen.
Einzelvokaleingabe
Eingaben, die einen einzelnen Vokal enthalten, werden unverändert ausgegeben.
Dad sat at a car and saw a fat bat.
gibt:
Dad sat at a car and saw a fat bat.
Dies ist Code-Golf , so dass nur wenige Bytecount-Codes gewinnen (nichts als ewiger PPCG-Ruhm)!
Ruby , 78 Bytes
Probieren Sie es online!
Eine schnelle und naive Herangehensweise. Y wird nicht als Vokal betrachtet.
quelle
Bash, 96 Bytes
Zwei gleichlange Lösungen:
Probieren Sie es online!
Nimmt Eingaben als Befehlszeilenargument und gibt sie an STDOUT aus.
quelle
05AB1E (Legacy) , 19 Byte
(Indirekt) hat dank Kevin ein Byte gespart (Drucken direkt in der Schleife, anstatt beizutreten, nur in der älteren Version).
Probieren Sie es online!
Verwenden Sie den Elixir-Rewrite (20 Byte)
Probieren Sie es online! (ohne
y
) | Probieren Sie es online! (mity
,žM
ersetzt durchžO
- gilt auch für die Legacy-Version)Wie es funktioniert
quelle
y
sollte auch6
anstelle von verwenden5
, übrigens.y
-vokal-Version habe ich versehentlich den falschen TIO-Link kopiert, als ich antwortete: | ...i
in meinem Code hatte .. Deine Antwort schlägt bei Eingaben ohne Vokale fehl. Erwartet wird eine leere Ausgabe, aber sie druckt die Eingabe selbst. :(Japt v2.0a0
-R
,2422 BytesBehandelt
y
wie ein Vokal. Ändern Sie beide Vorkommen von\y
bis\v
, um es als Konsonanten zu behandeln.Versuch es
Erläuterung
quelle
Jelly ,
23 20 1817 Bytes-2 Danke an Erik den Outgolfer
y
Als Vokal zu behandeln, ersetzen Sie beidec
s durchy
s.Probieren Sie es online!
Wie?
quelle
ż/
bei einem PaarZ
haben zwei Dyaden in einer Reihe, bei denen die linke in einer Monade ungepaart ist, implizit das Argument dazwischen)Z
> _ <), ich bin mir nicht sicher, was mit meiner TIO-Sitzung los war, aber das Entfernen der Redundanzð
funktionierte nicht. Neustart behoben.x€
→x
auch behoben , aber Sie haben mich ninja'd. : PRot , 229 Bytes
Nehmen
y
für einen NichtvokalProbieren Sie es online!
Etwas besser lesbar:
quelle
R ,
138, 129 BytesProbieren Sie es online!
y
wird nicht als Vokal betrachtetquelle
Python,
129119112 BytesProbieren Sie es online!
-7 Bytes dank @ Mr.Xcoder
quelle
JavaScript (Node.js) , 99 Byte
Probieren Sie es online!
Kommentiert
quelle
Java 10,
196188 Bytes-8 Bytes dank @ joH1 .
Ohne
y
als Vokal Bytes zu sparen.Probieren Sie es online aus.
Erläuterung:
quelle
v
in der SchleifePython 2 , 112 Bytes
Probieren Sie es online!
Behandelt
y
als Konsonant.quelle
Perl 6 , 64 Bytes
Probieren Sie es online!
quelle
Java (OpenJDK 8) , 184 Byte
y ist ein Vokal
Probieren Sie es online!
quelle