Hinweis: Der Titel wurde absichtlich falsch geschrieben.
Tauschen Sie bei einer gegebenen Zeichenfolge s die ersten Vokalläufe von jeweils 2 Wörtern aus. Für diese Herausforderung wird y als Vokal betrachtet.
Zum Beispiel bei einer Eingabe von "great day sir":
1. Input: "great day sir"
2. Identify pairs of words: "[great day] [sir]" (No word for sir to pair with)
3. Identify the first vowel runs in each word: "[gr[ea]t d[ay]] [s[i]r]"
4. Swap the vowel runs in each pair: "[gr[ay]t d[ea]] [s[i]r]"
5. Return/print: "grayt dea sir"
Wenn es Vokalläufe unterschiedlicher Länge gibt, tauschen Sie trotzdem die gesamten Läufe aus. Wenn ein Wort mehr als einen Vokal hat, tauschen Sie immer noch nur den ersten. Wenn das erste oder zweite Wort eines Wortpaares keinen Vokal enthält, tauschen Sie die Vokale nicht gegen diese Wörter aus.
Sie können davon ausgehen, dass die Eingabe nur aus einem Buchstaben und dem Literalraum oder einem anderen konstanten Trennzeichen besteht.
Standardmethoden für E / A, es gelten Standardlücken. Führende / nachfolgende Whatever sind in Ordnung.
Testfälle:
Input -> Output
"great day sir" -> "grayt dea sir"
"ppcg is the best" -> "ppcg is the best" (When there is no vowel to swap, don't swap vowels."
"this is a test case" -> "this is e tast case"
"loooooooooooooong word" -> "long woooooooooooooord"
"great night" -> "grit neaght"
"anything goes" -> "oenything gas"
"qwrtpsdfghjklzxcvbnm aaaaaaaa hi there" -> "qwrtpsdfghjklzxcvbnm aaaaaaaa he thire"
"this is a long test case in case you could not tell" -> "this is o lang tast cese an cise ou cyould net toll"
ppcg is awesome
werdenppcg is awesome
oderppcg as iwesome
?this is a long test case in case you could not tell
sollte seinthis is o lang tast cese an cise ou cyould net toll
, da der Vokal läuftyou
undou
getauscht werden würde.Antworten:
V ,
42, 41 BytesProbieren Sie es online!
Hexdump:
Erläuterung:
Dies setzt alle Gruppen von zwei Wörtern in eine eigene Zeile, zum Beispiel:
Jetzt führen wir eine ausgefallene Regex-Magie aus:
quelle
Japt ,
3937 BytesSie sagten, es wäre hässlich, aber ich hörte nicht zu ... und es war:
Online testen!
Erläuterung
quelle
JavaScript (ES6),
6210698101 ByteCode-Snippet anzeigen
quelle
Netzhaut , 65 Bytes
Probieren Sie es online! Beinhaltet Testfälle. Ich wollte eine bedingte Gruppenreferenz verwenden, aber ich konnte sie nicht in 66 Bytes oder gar 65 oder weniger zum Laufen bringen.
quelle
Netzhaut , 50 Bytes
Probieren Sie es online!
−2 Bytes dank Martin.
¶
aufzuteilen ist Newline). Dies ermöglicht es uns,.*
innerhalb eines Paares von Wörtern zu verwenden.quelle
[aeiouy]+
, konnte aber nicht wirtschaftlich werden.[aeiouy]
Duplizierung entfernt hat, aber ich kann nicht Golf spielen. Ich denke, es könnte gut mit Ihrem Vorschlag funktionierenPython 2 , 148 Bytes
Probieren Sie es online!
Code Golf macht süchtig!
quelle
Haskell ,
177173171169 BytesProbieren Sie es online!
Dies ist eine direkte Verkürzung der folgenden naiven Lösung, daher sollte es hier etwas Besseres geben:
quelle
Java (OpenJDK 8) ,
363304 + 25 Bytes-34 Bytes dank @KevinCruijssen
Golf gespielt:
Probieren Sie es online!
Ungolfed:
quelle
(l)->
bisl->
) entfernen . Sie könnenimport java.util.regex.*;
die Byteanzahl erhöhen und alle anderen entfernenjava.util.regex.
. Sie können die Klammer im regulären Ausdruck ("([aeiouy]+)"
->"[aeiouy]+"
) entfernen . Und Sie können sich ändernString[]s=l.split(" ");
zuString s[]=l.split(" "),a,b;
, dann können Sie das EntfernenString
innerhalb der for-Schleife; Und Sie können sich ändernString.join(" ",s);
zul.join(" ",s);
. Hier ist alles vereint. [ 329 bytes ]Perl, 58 Bytes
57 Byte Code + 1 für
-p
.-2 Bytes dank @Dada !
Probieren Sie es online!
quelle
?
und Speichern([aeiouy]+)
in einer Variablen: Probieren Sie es online aus!Ruby, 87 + 1 = 88 Bytes
Verwendet die
-p
Flagge.Probieren Sie es online!
quelle
Python 3 ,
198196192 Bytesif(m and n)
Wenn m und n & unerwünschte r für Regex-Zeichenfolge entfernt, Index i beginnend mit 1 anstelle von 0Probieren Sie es online!
quelle
i+1<len(a)
zui<=len(a)
, und der dritter durch eine Änderungif(m and n)
anif m and n
.i+1<len(a)
kann nicht geändert werden,i<=len(a)
oder es wird versucht zu bewerten,a[j]
dha[i+1]
füri=len(a)
undindex out of range
Fehler verursachen :i<len(a)+1
, whoops!