Введение
Рекурсивный акроним это аббревиатура , который содержит или относится к себе, например:
Fish
может быть рекурсивный акроним Fish is shiny hero
, обратите внимание , как это также содержит саму аббревиатуру. Другой пример Hi
-> Hi igloo
. Или даже ppcg paints
->ppcg paints cool galaxies pouring acid into night time stars
Таким образом, предложение представляет собой рекурсивную аббревиатуру, если первые буквы каждого слова обозначают первое слово или слова.
Вызов
Создайте программу, которая принимает строку из 1 или более слов, разделенных пробелом, и выводит рекурсивный акроним или пустую строку, если это невозможно. Невозможно создать рекурсивную аббревиатуру для строки, например, ppcg elephant
потому что вы начнете с того, что берете p
из, ppcg
затем добавляете это в аббревиатуру, затем берете e
из elephant
. Но теперь у нас есть противоречие, поскольку в настоящее время в аббревиатуре говорится «pe ..», что противоречит «pp ..». Это также касается, например hi
,. Вы бы взяли h
от hi
, но предложение теперь закончилось, и больше нет букв для расшифровки, hi
и у нас осталось только то, h
что не соответствуетhi
, (Строка нуждается в количестве слов, превышающем или равном количеству букв в аббревиатуре)
Вход и выход не чувствительны к регистру
ограничения
- Все, что введено в вашу программу, будет действительным английским словом. Но вы также должны убедиться, что вы выводите правильные английские слова (вы можете использовать базу данных или просто сохранить слово для каждой из 26 букв)
- Применяются стандартные лазейки и правила ввода / вывода по умолчанию
Тестовые случаи
hi igloo -> hi
ppcg paints -> (impossible)
ppcg paints cool giraffes -> ppcg
ppcg paints cool galaxies pouring acid into night time stars -> ppcgpaints
ppcg paints cool galaxies pouring acid into night time -> ppcg
ppcg questions professional pool challengers greatly -> (impossible)
I -> I
счет
Это код-гольф , поэтому выигрывает самый маленький исходный код в байтах
ppcg paints cool galaxies pouring acid into night time
было бы "ppcgpaint", когда превращено в аббревиатуру, но результат должен быть,ppcg
хотя это только частичное совпадение?Ответы:
Japt , 13 байт
Попробуйте онлайн!
источник
ppcg paints cool galaxies pouring acid into night time stars
контрольном примере05AB1E , 16 байтов
Попробуйте онлайн!
источник
ð¡
вместо#
вашего последнего редактирования? Какие-то особые тестовые случаи я не принимаю во внимание?#
произойдет сбой при вводе одиночного слова, выводя ввод вместо пустой строки.#
должен действовать так же, какð¡
... Есть ли вариант использования, который вы можете придумать, где вы хотите разбить строку на пробелы, но если она не содержит пробела, она должна остаться строкой (вместо строки завернут в список)? Другие люди читают это; К сведению: использование#
(разделить на пробел) строки без пробелов приводит к строке как есть (то есть"test" -> "test"
). Использованиеð¡
(разделить на пробел) строки без пробелов приводит к тому, что строка обернута в список (т.е."test" -> ["test"]
).#
также используется какquit if true
(что является его основной функцией). Если#
возвращается false, вы, вероятно, не захотите, чтобы проверенное значение было помещено в список, оставленный в стеке.Haskell,
5148 байтовИзменить: -3 байта благодаря @xnor.
Находит аббревиатуру.
Попробуйте онлайн!
источник
x
, сочинение(\w-> ...).words
будет короче.Perl 6 ,
50 42 5849 байтов-9 байт благодаря nwellnhof
Попробуйте онлайн!
Первый вариант
Я использую тот факт, чтоИли регулярное выражение из ответа Moonheart корочеord
единственное возвращает порядковое значение первой буквы строки, в то время какchrs
принимает список ордеров и возвращает строку.:(
. Для справки, предыдущий ответ был.words>>.ord.chrs
вместо[~] m:g/<<./
Объяснение:
источник
Сетчатка 0.8.2 , 60 байт
Попробуйте онлайн! Находит рекурсивное сокращение, если оно есть. Объяснение:
Дублируйте ввод.
Сократите слова в первой строке до их начальных букв.
Вставьте пробелы, чтобы соответствовать оригинальным словам, если это возможно.
Выведите первую строку, если это префикс второй строки.
источник
pp
вместо всего этогоPerl 6 , 56 байт
Попробуйте онлайн!
Ранее регулярные выражения были смущающими и непригодными для меня. Внезапно я их прекрасно понимаю. Что случилось со мной: P
Выполняет выбор 1.
источник
ppcgpaints
тест, иначе я бы предложил что-то вроде$!∈.words
условия ifK (нгн / к) , 40 байтов
Первый вариант:
Попробуйте онлайн!
источник
Rust, 155, попробуйте онлайн!
Выбранный: проблема 1: поиск аббревиатуры
Немного, немного:
Или, если мы можем предположить, что ввод вводится только строчными буквами, просто 130:
источник
Желе , 9 байт
Полная программа печати рекурсивного сокращения, если это возможно.
Попробуйте онлайн!
Как?
источник
JavaScript [ES6], 74 байта
Создает регулярное выражение для сопоставления. Смотрите примеры в коде.
Все тестовые случаи:
источник
increase i
Python 2 , 106 байт
Первый вариант - поиск рекурсивной аббревиатуры.
Возвращает результат в списке.
Попробуйте онлайн!
Python 2 , 120 байт
Первый вариант - поиск рекурсивной аббревиатуры.
Попробуйте онлайн!
источник
Javascript, 71 байт
Подход 1
Ungolfed:
источник
Рубин
-apl
, 57 байтПопробуйте онлайн!
источник
Python 2 , 109 байт
Попробуйте онлайн!
источник
Скала, 76 байт
Решение для простого случая (аббревиатуры без пробелов)
Scala,
144 байта100 байтов (см. Решение только по ASCII в комментариях)Тест в REPL
источник
:::
заменить на++
? Кроме того,List[String]
->Seq[Any]
?