Примечание: название было написано с ошибкой преднамеренно.
Если задана строка s, поменяйте местами первые гласные через каждые 2 слова. Для этого вызова у считается гласным.
Например, с учетом ввода «великий день, сэр»:
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"
Когда есть серии гласных различной длины, вы все равно меняете местами целые серии. Когда слово содержит более одного гласного слова, вы по-прежнему меняете только первый. Если в первом или втором слове пары слов нет гласной, вы не меняете местами гласные для этих слов.
Вы можете предположить, что входные данные состоят только из одного регистра букв алфавита и буквального пространства или другого константы-разделителя.
Применяются стандартные методы ввода / вывода, стандартные лазейки. Ведущие / ведомые все в порядке.
Тестовые случаи:
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
статьppcg is awesome
илиppcg as iwesome
?this is a long test case in case you could not tell
должен бытьthis is o lang tast cese an cise ou cyould net toll
, так как гласная работаетyou
иou
будет поменяться местами.Ответы:
V ,
42, 41 байтПопробуйте онлайн!
HexDump:
Объяснение:
Это поместит все группы из двух слов в отдельную строку, например:
Теперь мы запустим некоторую необычную магию регулярных выражений:
источник
Japt ,
3937 байтОни сказали, что это будет ужасно, но я не слушал ... и это было:
Проверьте это онлайн!
объяснение
источник
JavaScript (ES6),
6210698101 байтПоказать фрагмент кода
источник
Сетчатка , 65 байт
Попробуйте онлайн! Включает тестовые случаи. Я хотел использовать условную групповую ссылку, но я не мог заставить ее работать в 66 байтах, не говоря уже о 65 или меньше.
источник
Сетчатка , 50 байт
Попробуйте онлайн!
-2 байта благодаря Мартину.
¶
перевод строки). Это позволяет нам использовать.*
в паре слов.источник
[aeiouy]+
но не мог получить что-то экономичное.[aeiouy]
дублирование, но я не могу проиграть. Я думаю, что это может хорошо работать с вашим предложением: tio.run/…Python 2 , 148 байт
Попробуйте онлайн!
Code Golfing вызывает привыкание!
источник
Haskell ,
177173171169 байтПопробуйте онлайн!
Это прямое сокращение следующего наивного решения, поэтому здесь должно быть что-то намного лучше:
источник
Java (OpenJDK 8) ,
363304 + 25 байт-34 байта благодаря @KevinCruijssen
Golfed:
Попробуйте онлайн!
Ungolfed:
источник
(l)->
доl->
). Вы можете добавитьimport java.util.regex.*;
к байту-счетчику и удалить все остальныеjava.util.regex.
. Вы можете удалить скобки в регулярном выражении ("([aeiouy]+)"
->"[aeiouy]+"
). И вы можете изменитьString[]s=l.split(" ");
наString s[]=l.split(" "),a,b;
, затем вы можете удалитьString
внутри цикла for; И вы можете изменитьString.join(" ",s);
наl.join(" ",s);
. Вот все это вместе. [ 329 байт ]Perl, 58 байт
Код 57 байт + 1 для
-p
.-2 байта благодаря @ Дада !
Попробуйте онлайн!
источник
?
и сохранив([aeiouy]+)
переменную: попробуйте онлайн!Рубин, 87 + 1 = 88 байт
Использует
-p
флаг.Попробуйте онлайн!
источник
Python 3 ,
198196192 байтаif(m and n)
если m и n & удалили нежелательные r для строки регулярного выражения, индекс i начинается с 1 вместо 0Попробуйте онлайн!
источник
i+1<len(a)
наi<=len(a)
, и третий, изменивif(m and n)
наif m and n
.i+1<len(a)
нельзя изменить,i<=len(a)
иначе он попытается оценить,a[j]
т.a[i+1]
i=len(a)
index out of range
i<len(a)+1
, упс!