Cette question est écrite parce que "Thing Explainer" est amusant à lire et m'a donné une idée.
Écrivez "des trucs qui font faire des choses à l'ordinateur" qui lit / prend un ensemble de lettres, de chiffres et d'autres choses comme ça "#%|?
et retourne True / 1
si tous les mots font partie de cet ensemble .
Si tous les mots ne font pas partie de cet ensemble, renvoyez les mots qui n'en faisaient pas partie.
Ce site Web peut être considéré comme correct dans tous les cas. Les règles sont écrites pour suivre les spécifications de ce site.
Exemples:
Vérité :
Le code doit retourner une valeur véridique si tout le texte au-dessus de la première ligne horizontale est collé en entrée.
Les lignes suivantes doivent renvoyer une valeur véridique (l'entrée est séparée par ###
)
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 :
Dans les exemples suivants, l'entrée et la sortie sont séparées par ***
. Différents cas de test sont séparés par ###
.
This code doesn't return "Hello, World!"
***
code
###
tHiS rEtUrN"s false...
***
s
false
Des règles plus détaillées:
- Vous pouvez utiliser ce pour tester votre code.
- Les non-lettres sont interprétées comme des espaces par le code, à l'exception des mots comme
'wasn't'
. Les mots avec des apostrophes renvoyéstrue
sont inclus dans la liste- Par exemple:
foo123bar
devrait retournerfoo
etbar
, comme ils ne font pas partie de la liste, et123
peuvent être interprétés comme des espaces
- Par exemple:
- L'entrée ne contiendra que des points de code ASCII imprimables [10, 32-126].
- Les mots peuvent contenir des minuscules. Voir deuxième cas de test.
- La liste des mots
- doit être pris en entrée (STDIN, argument de fonction ou équivalent)
- peut être modifié (les mots peuvent être séparés par une nouvelle ligne, une virgule, etc., et vous pouvez trier la liste)
- Notez que vous ne pouvez pas utiliser cette liste (elle n'est pas identique)
- La sortie peut être dans n'importe quel format que vous aimez
- La sortie peut être majuscule, minuscule ou mixte (facultatif)
- Il ne doit pas y avoir de symboles dans la sortie
Pour mémoire, Jonathan Allan a trouvé un cas de coin étrange: l'implémentation sur XKCD ignorera en fait toutes les lettres après une apostrophe jusqu'à la prochaine non [AZ] [az] ['] - par exemple find's found
, et les find'qazxswedc found'
deux ne renvoient rien, tandis que les find'qazx.swedc found
retours swedc
.
Vous pouvez choisir si vous ne voulez rien find'qazxswedc found'
retourner ou retourner qazxswedc
. De retour qazx, swedc
pour find'qazx.swedc
est OK.
la source
Boolean
ouArray<String>
, le retour d'un tableau / liste vide serait-il autorisé?1
. Une sortie vide n'est pas autorisée.find'qazxswedc
entrée. Sommes-nous ou ne sommes-nous pas censés nous diviser sur les apostrophes? Par exemple,isn't
renvoietrue
(il est dans la liste), maisisn
retourneisn
, car ce n'est pas sur la liste. Dans cette logique, je suis allé avec "ne pas diviser sur les apostrophes" etfind'qazxswedc found
revient doncfind'qazxswedc
.Réponses:
PowerShell v3 +,
10592 octetsPrend des mots simples comme
$a
et des mots comme$b
. Rend aide$x
. Prenez chaque mot$b
et débarrassez-vous de toutes les mauvaises lettres, puis vérifiez chacune|{...}
. Si ce mot n'est pas là$a
, alors nous l'ajoutons à$x
. A la fin, on choisit$x
ou1
non$x
. Cela est envoyé, soitwords
ou1
.Quelques mots à essayer
la source
Python, 93 octets
Tous les cas de test sont à idéone
Le prétraitement de la liste consiste à la diviser
|
et à la mettre dans unset
(ce qui, je suppose, est bien si le pré-tri est autorisé). Saisissez les mots en tant quew
et définissez en tant ques
.Si cela n'est pas autorisé, cela devient 98 octets avec
not in s
devenantnot in set(s)
.Nous pourrions le prétraiter pour avoir également toutes les permutations de caractères majuscules et minuscules et économiser 8 octets, mais je pense que cela pourrait aller trop loin (ce serait un énorme ensemble).
la source