Вы когда-нибудь мечтали создать классные хештеги в твиттере, такие как #brexit или #brangelina ? этот гольф для тебя.
Напишите программу, которая принимает две строки A & B в качестве входных данных и объединяет их в соответствии со следующим алгоритмом:
- let
n
- количество групп гласных в A (например,britain
имеет 2 группы гласных:i
в позиции 3 иai
в позиции 5).- если n = 1: усечь A, начиная с первой позиции группы гласных (пример:
bill
=>b
) - если n> 1: обрезать A, начиная с его
n-1
группы гласных (пример:programming
=>progr
,britain
=>br
)
- если n = 1: усечь A, начиная с первой позиции группы гласных (пример:
- удалить все согласные в начале буквы B (
jennifer
=>ennifer
) - объединить модифицированные A & B
Гласные есть aeiou
; согласные есть bcdfghjklmnpqrstvwxyz
.
вход
Можно предположить, что входные строки строчные и содержат как минимум одну гласную и одну согласную.
Примеры
brad + angelina => brangelina
britain + exit => brexit
ben + jennifer => bennifer
brangelina + exit => brangelexit
bill + hillary => billary
angelina + brad => angelad
programming + puzzle => progruzzle
code + golf => colf
out + go => o
donald trump
,Django + Angular = Djular
Ответы:
Рубин,
444340 + 1 = 41 байт+1 байт за
-p
флаг. Принимает разделенный пробелами ввод в STDIN.-1 байт благодаря Мартину Эндеру
-2 байт благодаря гистократу
Попробуйте онлайн!
GNU sed,
3937 + 1 = 38 байт+1 байт за
-E
флаг. Принимает разделенный пробелами ввод в STDIN.-1 байт благодаря Мартину Эндеру
Попробуйте онлайн!
Не публикуйте это как отдельный ответ, потому что это буквально одно и то же решение.
источник
[^aeiou]
качестве подвыражения:/([aeiou]+([^aeiou]*)){,2} \g<2>/
ruby -e "..."
. Для этого этоruby -pe "..."
, так что он добавляет только один байт.MATL,
3130 байтПопробуйте онлайн
объяснение
источник
JavaScript (ES6),
817372 байтаСохранено 8 байт благодаря @Jordan, 1 благодаря @DavidConrad
Даже если
.match
возвращает массив,array+array
возвращает строку с конкатенацией содержимого массивов (т.е.[0]+[1]
возвращает"01"
).Тестовый фрагмент
Показать фрагмент кода
Отличное решение Jordan для Ruby будет содержать 53 байта в JS:
источник
(a,b)=>
доa=>b=>
1 байта.Желе ,
2322 байтаTryItOnline
Как?
источник
PowerShell v2 +, 76 байт
Видимо это популярное регулярное выражение ... ;-)
Использует
-replace
оператор для извлечения соответствующих частей, затем объединяет результаты в строку. Добавляет a$
к первому, чтобы убедиться, что мы потянем конец строки, и добавим a^
ко второму, чтобы убедиться, что мы вытянули переднюю часть строки.источник
Сетчатка , 35 байт
Попробуйте онлайн! (Первая строка включает набор тестов, разделенных переводом строки.)
Просто удаляет все совпадения регулярного выражения в первой строке.
источник
/^((\(\g<1>\))*)$/
в Ruby.Корица, 23 байта
Попробуйте онлайн.
объяснение
Это распаковывает
d([aeiou]+[^aeiou]*)([aeiou]+[^aeiou]*)? [^aeiou]*
, чтоd
выбирает все, что соответствует этому регулярному выражению. (Обратите внимание, что игрок в гольф Джорданаd([aeiou]+[^aeiou]*){,2} [^aeiou]*
сжимает до 24 байт из-за отсутствия повторяющихся элементов для сжатия.)источник
d[aeiou]+[^aeiou]*[aeiou]*[^aeiou]* [^aeiou]*
короче?PHP, 95 байт
с preg_match вместо preg_filter 110 байт
источник
+
вместо{1,2}
.$v=aeiou;
чтобы сохранить еще 3.Луа, 66 байт
источник
Perl 5, 39 байт
38, плюс 1
-pe
вместо-e
Шляпный наконечник.
источник
Python 2, 139 байт
Это было сложно.
Проверьте это на repl.it
источник
Lithp , 65 байт
Это в основном порт ответа JavaScript выше, на моем функциональном языке программирования Lisp.
Пример использования:
Онлайн переводчика пока нет. Я предоставлю один в ближайшее время. Это не составит труда, мой язык написан на JavaScript.
Вместо этого это решение головоломки реализовано в качестве рабочего примера для моего языка. Его можно запустить с помощью следующей команды:
источник
Haskell,
111108 байтЭто решение без регулярных выражений оказалось дольше, чем ожидалось. Всё равно в идеале.
источник
Jq 1,5 , 45 байт
Ничего особенного, просто порт msh210 PERL решения «ы в PCRE JQ в.
Попробуйте онлайн!
источник
Japt , 18 байт
Попробуйте онлайн!
Прямой порт короткого решения JS, которое в свою очередь является портом решения Jordan для Ruby .
Как это устроено
источник