Десять сотень найпоширеніших слів


9

Це запитання написане тому, що "Thing Explainer" цікаво читати і дав мені ідею.

Напишіть "речі, які змушують комп'ютер робити речі", який читає / приймає набір букв, цифр і подібних речей "#%|?і повертається, True / 1якщо всі слова є частиною цього набору .

Якщо всі слова не входять до цього набору, поверніть слова, які не були його частиною.


Цей веб-сайт можна вважати правильним у всіх випадках. Правила написані для дотримання специфікацій на цьому сайті.


Приклади:

Truthy :

Код повинен повернути значення "truthy", якщо весь текст над першим горизонтальним рядком вставлений як вхідний.

У наступних рядках повинно бути повернене значення "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

Фальсі :

У наступних прикладах введення та виведення розділені між собою ***. Різні тестові випадки розділені між собою ###.

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також добре.



Я не впевнений, що це дупа. Ваше завдання дещо інше, оскільки вам потрібно повернути непрості слова. І, на вашу користь, у вас є звичайна специфікація, написана щоденною англійською мовою. codegolf.stackexchange.com/questions/53323/…
Джеймс

Для статично набраної мови, яка не може виразити тип повернення Booleanабо Array<String>, чи буде повернення порожнього масиву / списку допустимим?
CAD97

@ CAD97 для випадку, коли всі слова прості? Ви можете вибрати, як ви хочете відобразити значення truthy, це може бути ціле число / рядок 1. Порожній вихід недопустимий.
Стюі Гріффін

Мене бентежить нове пояснення правил find'qazxswedcвведення. Ми чи не повинні розбиватися на апострофи? Наприклад, isn'treturn true(це у списку), але isnповертається isn, оскільки цього немає в списку. З цієї логіки я пішов з "не розділяйся на апострофи" і тому find'qazxswedc foundповертаюся find'qazxswedc.
AdmBorkBork

Відповіді:


2

PowerShell v3 +, 105 92 байт

param($a,$b)$x=@();-split($b-replace"[^a-zA-Z']",' ')|%{if($_-notin$a){$x+=$_}};($x,1)[!$x]

Бере прості слова, як $a, і слова подібні $b. Робить помічників $x. Візьміть кожне слово $bі позбудьтесь від будь-яких поганих не букв, а потім перевіряйте кожне |{...}. Якщо цього слова немає $a, ми додаємо його до $x. Наприкінці ми вибираємо $xчи 1ні $x. Це надсилається, wordsабо 1.

Деякі слова спробувати

PS C:\Tools\Scripts\golfing> ('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'|%{"$_";(.\ten-hundred-most-common-words.ps1 (gc .\ten-hundred-most-common-words.txt) $_)})-join"`n###`n"
This returns "Hello, World!"
###
1
###
tHiS rEtUrNs TrUe...
###
1
###
Thing Explainer is a book written by a man.
The man writes books with simple words.
###
1
###
This set of stuff "¤!^¤>7\ must return true
###
1

PS C:\Tools\Scripts\golfing> ("This code doesn't returns Hello, World!",'tHiS rEtUrN"s false...'|%{"$_`n***`n"+(.\ten-hundred-most-common-words.ps1 (gc .\ten-hundred-most-common-words.txt) $_)})-join"`n###`n"
This code doesn't returns Hello, World!
***
code
###
tHiS rEtUrN"s false...
***
s false

2

Пітон, 93 байти

import re
lambda w,s:[w for w in re.sub("[^'\w]|\d|_",' ',w).split()if w.lower()not in s]or 1

Усі тестові справи знаходяться на ideone

Попередня обробка списку полягає в тому, щоб розділити їх |і помістити в нього set(що, я думаю, це добре, якщо дозволено попереднє сортування). Введіть слова як wі безліч s.

Якщо це не дозволено, це стає 98 байтів із not in sстановленням not in set(s).

Ми можемо попередньо обробити його, щоб мати всі перестановки верхніх і малих символів і зберегти 8 байт, але я думаю, що це може бути занадто далеко (це був би величезний набір).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.