Uwaga: tytuł został celowo wpisany błędnie.
Biorąc pod uwagę ciąg s, zamień pierwsze serie samogłosek co 2 słowa. W przypadku tego wyzwania y jest uważane za samogłoskę.
Na przykład, biorąc pod uwagę „wielki dzień pana”:
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"
Gdy istnieją przebiegi samogłosek o różnych długościach, nadal zamieniasz całe przebiegi. Kiedy słowo ma więcej niż jedną samogłoskę, nadal zamieniasz tylko pierwszą. Kiedy pierwsze lub drugie słowo pary słów nie ma samogłoski, nie zamieniasz samogłosek dla tych słów.
Możesz założyć, że dane wejściowe składają się tylko z jednej litery liter alfabetu i spacji dosłownej lub innego stałego separatora.
Obowiązują standardowe metody wejścia / wyjścia, standardowe luki. Wiodące / końcowe whatevers są w porządku.
Przypadki testowe:
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
stać sięppcg is awesome
alboppcg as iwesome
?this is a long test case in case you could not tell
powinien byćthis is o lang tast cese an cise ou cyould net toll
, ponieważ samogłoska działayou
iou
zostanie zamieniona.Odpowiedzi:
V ,
42, 41 bajtówWypróbuj online!
Hexdump:
Wyjaśnienie:
Spowoduje to umieszczenie wszystkich grup dwóch słów we własnej linii, na przykład:
Teraz wykonujemy fantazyjną magię wyrażeń regularnych:
źródło
Japt ,
39 lat37 bajtówPowiedzieli, że będzie brzydka, ale nie słuchałem ... a było to:
Przetestuj online!
Wyjaśnienie
źródło
JavaScript (ES6),
6210698101 bajtówPokaż fragment kodu
źródło
Siatkówka , 65 bajtów
Wypróbuj online! Obejmuje przypadki testowe. Chciałem użyć warunkowego odwołania do grupy, ale nie mogłem zmusić go do działania w 66 bajtach, a tym bardziej w 65 lub mniej.
źródło
Siatkówka , 50 bajtów
Wypróbuj online!
-2 bajty dzięki Martinowi.
¶
jest to nowa linia). To pozwala nam korzystać.*
kilku słów.źródło
[aeiouy]+
ale nie mogłem uzyskać czegoś ekonomicznego.[aeiouy]
duplikację, ale nie mogę jej pograć w golfa. Myślę, że może to ładnie działać z twoją sugestią: tio.run/…Python 2 , 148 bajtów
Wypróbuj online!
Code Golfing uzależnia się!
źródło
Haskell ,
177173171169 bajtówWypróbuj online!
Jest to bezpośrednie skrócenie następującego naiwnego rozwiązania, dlatego powinno być tutaj coś znacznie lepszego:
źródło
Java (OpenJDK 8) ,
363304 + 25 bajtów-34 bajty dzięki @KevinCruijssen
Gra w golfa:
Wypróbuj online!
Nie golfowany:
źródło
(l)->
dol->
). Możesz dodaćimport java.util.regex.*;
do liczby bajtów i usunąć wszystkie innejava.util.regex.
. Możesz usunąć nawias w wyrażeniu regularnym ("([aeiouy]+)"
->"[aeiouy]+"
). I możesz zmienićString[]s=l.split(" ");
naString s[]=l.split(" "),a,b;
, a następnie możesz usunąćString
wnętrze pętli for; I możesz zmienićString.join(" ",s);
nal.join(" ",s);
. Oto wszystko połączone. [ 329 bajtów ]Perl, 58 bajtów
Kod 57 bajtów + 1 dla
-p
.-2 bajty dzięki @Dada !
Wypróbuj online!
źródło
?
i zapisując([aeiouy]+)
w zmiennej: Wypróbuj online!Rubinowy, 87 + 1 = 88 bajtów
Używa
-p
flagi.Wypróbuj online!
źródło
Python 3 ,
198196192 bajtówif(m and n)
aby if i n usunęły niechciane r dla ciągu regularnego, indeks i zaczynając od 1 zamiast 0Wypróbuj online!
źródło
i+1<len(a)
nai<=len(a)
, a trzeci przez zmianęif(m and n)
naif m and n
.i+1<len(a)
nie można zmienić na,i<=len(a)
inaczej spróbuje ocenić,a[j]
tj.a[i+1]
Zai=len(a)
i spowodujeindex out of range
błąd:i<len(a)+1
, ups!