Этот вопрос написан потому, что "Thing Explainer" интересно читать и дал мне идею.
Напишите «вещи, которые заставляют компьютер делать вещи», которые читают / принимают набор букв, цифр и тому подобное "#%|?
и возвращают, True / 1
если все слова являются частью этого набора .
Если все слова не являются частью этого набора, верните слова, которые не были частью этого набора.
Этот сайт можно считать правильным во всех случаях. Правила написаны в соответствии со спецификациями на этом сайте.
Примеры:
Truthy :
Код должен возвращать истинное значение, если весь текст над первой горизонтальной строкой вставлен в качестве ввода.
Следующие строки должны возвращать истинное значение (вход разделяется ###
)
This returns "Hello, World!"
###
tHiS rEtUrNs TrUe...
###
Thing Explainer is a book written by a man.
The man writes books with simple words.
###
This set of stuff "#!^{>7( must return true
Falsey :
В следующих примерах вход и выход разделены ***
. Различные тестовые случаи разделены ###
.
This code doesn't return "Hello, World!"
***
code
###
tHiS rEtUrN"s false...
***
s
false
Более подробные правила:
- Вы можете использовать это для проверки вашего кода.
- Не-буквы интерпретируются кодом как пробелы, кроме слов вроде
'wasn't'
. Слова с апострофами, которые возвращаютсяtrue
, включены в список- Например:
foo123bar
должен возвращатьfoo
иbar
, так как они не являются частью списка, и123
могут быть интерпретированы как пробелы
- Например:
- Входные данные будут содержать только печатаемые кодовые точки ASCII [10, 32-126].
- Слова могут содержать буквы в смешанном регистре. Смотрите второй контрольный пример.
- Список слов
- должен быть взят в качестве входных данных (STDIN, аргумент функции или эквивалентный)
- могут быть изменены (слова могут быть разделены новой строкой, запятой и т. д., и вы можете отсортировать список)
- Обратите внимание, что вы не можете использовать этот список (он не идентичен)
- Вывод может быть в любом формате, который вам нравится
- Выход может быть в верхнем, нижнем или смешанном регистре (опционально)
- На выходе не должно быть символов
Напомним, что Джонатан Аллан обнаружил странный случай: в XKCD реализация фактически игнорирует любые буквы после апострофа, например, до следующего не [AZ] [az] ['] find's found
, и find'qazxswedc found'
оба ничего не find'qazx.swedc found
возвращают , тогда как возвращает swedc
,
Вы можете выбрать, хотите ли вы вернуть ничего find'qazxswedc found'
или вернуть qazxswedc
. Возврат qazx, swedc
на find'qazx.swedc
это тоже нормально.
источник
Boolean
илиArray<String>
, будет ли допустимым возвращение пустого массива / списка?1
. Пустой вывод не допускается.find'qazxswedc
ввода. Мы или мы не должны разделяться на апострофы? Например,isn't
возвращаетtrue
(он находится в списке), ноisn
возвращаетсяisn
, поскольку его нет в списке. Исходя из этой логики, я пошел с «не делить на апострофы», и поэтомуfind'qazxswedc found
возвращаетсяfind'qazxswedc
.Ответы:
PowerShell v3 +,
10592 байтаПринимает простые слова, как
$a
, и слова, как$b
. Делает помощник$x
. Возьмите каждое слово$b
и избавьтесь от всех плохих, а не букв, а затем проверьте каждое|{...}
. Если этого слова нет$a
, мы добавляем его в$x
. В конце концов, мы выбираем$x
или1
нет$x
. Это отослано,words
или1
.Несколько слов, чтобы попробовать
источник
Python, 93 байта
Все тесты в идеале
Предварительная обработка списка состоит в том, чтобы разделить
|
и поместить его вset
(что, я думаю, хорошо, если предварительная сортировка разрешена). Введите слова какw
и установить какs
.Если это не разрешено, это становится 98 байтами с
not in s
становлениемnot in set(s)
.Мы могли бы предварительно обработать его, чтобы иметь все перестановки символов верхнего и нижнего регистра и сохранить 8 байтов, но я думаю, что это может зайти слишком далеко (это будет огромный набор).
источник