Из-за этого вам нужен лучший способ понять, является ли фраза аббревиатурой слова. Вы также думаете, что стоит посмотреть, являются ли рассматриваемая фраза и слово рекурсивными акронимами.
Твое задание:
Если дано слово, а затем фраза, разделенная строкой, выведите, если фраза является аббревиатурой, а затем, если это рекурсивная аббревиатура . (Фраза содержит то, что она обозначает)
- Ввод будет состоять из букв и пробелов.
- Ваша программа не должна быть чувствительной к регистру.
Пример ввода / вывода:
Случай 1:
Входные данные:
Acronyms
Acronyms can really obviously narrow your message sensors
Выход:
True
True
Случай 2:
Входные данные:
FAQ
frequently asked questions
Выход:
True
False
Случай 3:
Входные данные:
foo
bar baz
Выход:
False
False
Дело 4:
Входные данные:
GNU
GNU is not Unix
Выход:
False
False
Дело 5:
Входные данные:
Aha
A huge Aha
Выход:
True
True
Ответы:
Пиф,
1918Это выводит результат в довольно нечетном формате, например:
TrueFalse
.Вы можете попробовать это онлайн или запустить Test Suite .
Объяснение:
источник
Python 3, 89
Благодаря SOPython сэкономлено несколько байтов.
Наиболее сложной частью этого решения является
h=tuple(a)==next(zip(*d))
.Это распаковывает список
d
в zip, а затем вызывает,next
чтобы вернуть кортеж первого элемента каждого переданного итератора,zip
который затем сравнивается с кортежем каждой буквы в a (tuple(a)
).источник
[0]==l
на.startswith(l)
.CJam,
2120 байтПопробуйте эту скрипку в интерпретаторе CJam или проверьте все тестовые случаи одновременно.
Как это работает
источник
Haskell,
8180 байтФормат вывода не является строго определенным, поэтому я возвращаю пару логических значений, например
p "Aha\na huge arm"
->(True,False)
.источник
<-
) - спасибо!Scala,
135110108 байтСохранение нескольких байтов с использованием аргументов командной строки (спасибо J Atkin за подсказку), использование логических значений в качестве tupel, использование
mkString
вместоnew String
print и println.РЕДАКТИРОВАТЬ: неправильно истолковал вопрос, и пришлось переопределить решение
источник
Python 3, 106 байт
Ну, по крайней мере, это победило Скала;)
источник
AppleScript,
302301297293 байтаО, черт возьми, да. Даже не надоело, что я проигрываю, это конкурентоспособно для AppleScript.
Выходы как:
Или каким бы ни был ответ.
источник
PHP, 120 байт
Не чувствительность к регистру - большой вес (26 байт). Пройдены все тестовые случаи:
Выводит два значения bool в этой форме:
Читает два аргумента из командной строки, например:
Ungolfed
источник
Рубин,
7774 байтаисточник
Рубин, 52 байта
Пример:
источник
Matlab, 90 байт
Пример (обратите внимание, что Matlab отображает
true
/false
как1
/0
):источник
JavaScript ES6,
9592 байтаВведите обе строки в качестве параметров. Выводит массив с двумя значениями: по одному для каждого логического значения.
источник
.indexOf
. Хорошо сделано! Возможно,r=eval(`/^${a}$/i`)
будет работать вместо вашей текущейr
настройки.eval
какRegExp
объект Shortener. Спасибо за совет!GNU sed, 118 байт
Требуется
-r
флаг, включенный в оценку как +1. Обратите внимание, что я использую\b
для сопоставления границы слова, хотя я не могу найти это задокументировано в GNU sed. Это работает для меня ...Expanded:
источник
Groovy, 91 байт
Выходной формат.
[bool, bool]
Это принимает его от аргументов командной строки.источник
Lua 5.3, 182 байта
источник
R, 93 байта
Использование:
источник
awk
137 байтT="True";F="False"
чтобы упростить вывод.NR*NF<2{a=tolower($1)}
: установить,a
только если в первой строке есть только одно поле.END{...}
: при условии, только две строки ...for(i=1;i<=NF;i++)b=b substr(tolower($i),1,1)
: построить рекурсивную аббревиатуру.print(a==b?T:F)"\n"(a==tolower($1)?T:F)
: распечатать вывод обоих сравнений,a==b
иa==tolower($1)
.Если кто-нибудь знает, как оптимизировать рекурсивную конструкцию аббревиатуры, не стесняйтесь предлагать.
источник
SpecBAS - 144 байта
Преобразование 2-х входов в верхний регистр сохраняет символы против преобразования в нижний регистр. Теперь можно сделать несколько назначений в одном
LET
операторе, что также помогает. ИTEXT
сохраняет один символ болееPRINT
.Использует 1/0, чтобы показать true / false (апостроф просто перемещает вывод на следующую строку).
источник
Perl5, 90 байт
немного обманывают: 0 = все ложно, 1 = одно истина, 2 = оба истина. Я не игрок в гольф, но расстроен Perl отсутствует при просмотре!
источник
JavaScript (ES6) 93
Попробуйте запустить приведенный ниже фрагмент в любом браузере, совместимом с EcmaScript 6
источник
JavaScript (ES6),
899695 байтЧерт ... Я думал, что все улажено, но, видимо, я ошибался.
Это определяет анонимную функцию, которая принимает входные данные в виде двух строк, а также возвращает массив двух логических элементов. Первый элемент рассчитывается путем сравнения первой строки со всеми строчными буквами с первым символом каждого слова во второй строке. Второй элемент рассчитывается просто путем проверки, содержит ли вторая строка первую.
Вот еще одно решение для второго пункта; На 2 байта короче, но очень немногие браузеры поддерживают это:
источник
GNU: Gnus nettle unicorns
ReferenceError: l is not defined
(отсутствуетl=
раньшеtoLowerCase
)'GNU','GNU is not unix'
(тестовый пример 4) должен быть ложным, ложнымl=
, ища ошибку, и забыл ее вернуть. Спасибо, что подняли это! Другой контрольный пример также должен быть исправлен.Пайк (без публикации при публикации), (неконкурентный), 20 байт
Вы можете найти исходный код здесь , язык совершенно нестабилен (первый тестовый вызов для него), поэтому не ожидайте, что он будет работать в будущем (commit 8)
Или 18 байт (стабильный)
Попробуй это здесь!
источник