В New York Times есть ежедневная онлайн-игра под названием Letter Boxed (ссылка находится за платным доступом; игра также описана здесь ), представленная на квадрате следующим образом:
Вам дается 4 группы по 3 буквы (каждая группа соответствует одной стороне на картинке); ни одна буква не появляется дважды. Цель игры - найти слова, состоящие из этих 12 букв (и только из этих букв), которые бы:
- Каждое слово длиной не менее 3 букв;
- Последовательные письма не могут быть с одной и той же стороны;
- Последняя буква слова становится первой буквой следующего слова;
- Все буквы используются как минимум один раз (буквы можно использовать повторно).
В этом задании вам даны буквы и список слов. Цель состоит в том, чтобы проверить, является ли список слов действительным решением в штучной упаковке.
вход
Ввод состоит из (1) 4 групп по 3 буквы и (2) списка слов. Это может быть в любом подходящем формате.
Выход
Истинное значение, если список слов является допустимым решением проблемы Letter Boxed для этих букв 4 × 3, а в противном случае - ложное значение.
Контрольные примеры
Группы букв = {{I,C,O}, {M,R,E}, {G,N,S}, {A,P,L}}
.
Истинные ценности
- ПОДГОТОВКА, ЗАКРЫТЬ
- УРОЖАЙ, ПАРУС, ЛИН, НОП, ЭНИГМА
Ложные ценности
- КРАСНАЯ СИСТЕМА, ЭКОНОМИКА (не может иметь CO, так как они на одной стороне)
- CROPS, SAIL, LEAN, NOPE (G и M не использовались)
- ПОДГОТОВКА, ЗАКРЫТИЕ (U не одна из 12 букв)
- ENCLOSE, PILGRIMAGE (последняя буква первого слова не является первой буквой второго слова)
- Мошенничество, SO, ОРГАНИЗАЦИЯ, ELOPE (все слова должны быть не менее 3 букв).
Обратите внимание, что в этой задаче нам не важно, правильны ли слова (часть словаря).
Подсчет очков:
Этот код-гольф , выигрывает самая низкая оценка в байтах!
источник
no letter appears twice
[]
и0
ложные. Можем ли мы выводить либо, либо наш вывод должен быть последовательным?Ответы:
JavaScript (ES6),
130126 байтов(letters)(words)
Попробуйте онлайн!
Шаг 1
Шаг 2
источник
Желе ,
3029 байтПопробуйте онлайн!
Диадическая ссылка, которая принимает список слов в качестве левого аргумента и плоский список букв в поле в качестве правого аргумента. Он возвращает
1
для истинного и0
ложного.объяснение
источник
05AB1E ,
37353332312928 байт-2 байта, вдохновляя
ê
подход @Emigna, использованный в его ответе 05AB1E .-3 байта благодаря @Grimy .
Принимает список символов для слов в качестве первого ввода и плоский список из двенадцати букв в качестве второго ввода.
Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
источник
¹€g3@
->DO2@
после первой проверки ( TIO )05AB1E , 42 байта
Попробуйте онлайн!
источник
P
после карт и использовать)˜P
в конце. 41 байт Хороший подход сê
однако! Сохранено 2 байта в моем ответе 05AB1E.Python 2 , 171 байт
Попробуйте онлайн!
источник
Желе , 34 байта
Диадическая ссылка, принимающая слова слева и буквы группы справа, которая дает,
1
если она действительна, а0
если нет.Попробуйте онлайн! Или посмотрите набор тестов .
источник
Haskell , 231 байт
Попробуйте онлайн!
Не лучший результат. Некоторые гуру Haskell, вероятно, смогут получить это менее 100 байтов.
использование
объяснение
источник
Haskell , 231 байт
Другой вариант Haskell, точно такого же размера, как у @Paul Mutser :)
Попробуйте онлайн!
Ungolfed
источник
Рубин , 126 байт
Попробуйте онлайн!
источник
grep
.puts f[l,['PILGRIMAGE','ENCLOSE','EG']]
возвращаетtrue
вместоfalse
.Java (JDK) , 188 байт
Попробуйте онлайн!
Пояснения
кредиты
источник
Древесный уголь , 63 байта
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Объедините приведенные ниже выражения и выведите их,
0
если любое из них содержит0
другое1
.Для каждого слова в решении выведите, будет ли его длина не менее 3.
Для каждой буквы в решении выведите, появляется ли она в головоломке.
Для каждой буквы в загадке выведите, появляется ли она в решении.
Для каждой буквы в решении проверьте, что предыдущая буква не входит в ту же группу, если только она не является первой буквой слова, и в этом случае убедитесь, что она равна последней букве предыдущего слова, если только она не является первой буква решения, в этом случае просто игнорировать его.
источник
Python 2 ,
168156 байтПопробуйте онлайн!
Возвращается
1
за правду,0
за фалси.источник