Dans Keep Talking and Nobody Explodes , les joueurs sont chargés de désamorcer les bombes sur la base des informations de leurs "experts" (d'autres personnes avec un manuel). Chaque bombe est composée de modules, dont l'un peut être un mot de passe, où l'expert reçoit cette liste de mots de passe possibles, de cinq lettres:
about after again below could
every first found great house
large learn never other place
plant point right small sound
spell still study their there
these thing think three water
where which world would write
Et le joueur reçoit une liste de 6 lettres possibles pour chaque place dans le mot de passe. Étant donné les combinaisons de lettres possibles, sortez le mot de passe correct. L'entrée peut être dans n'importe quel format raisonnable (tableau 2D, chaîne séparée par un retour à la ligne, etc.) Vous pouvez réduire le code que vous utilisez pour compresser / générer la liste / chaîne / tableau / quel que soit le mot de passe. (Merci @DenkerAffe)
REMARQUE: les mots de passe ne respectent pas la casse. Vous pouvez supposer que la saisie ne résoudra que pour un seul mot de passe.
Exemples / cas de test
L'entrée ici sera représentée comme un tableau de chaînes.
["FGARTW","LKSIRE","UHRKPA","TGYSTG","LUOTEU"] => first
["ULOIPE","GEYARF","SHRGWE","JEHSDG","EJHDSP"] => large
["SHWYEU","YEUTLS","IHEWRA","HWULER","EUELJD"] => still
<
dans ma solution Bash, par exemple.Réponses:
Pyth, 13 octets
Suite de tests.
la source
Bash, 22 octets
Courez comme ça:
la source
fold -5<<<ABOUTAFTERAGAINBELOWCOULDEVERYFIRSTFOUNDGREATHOUSELARGELEARNNEVEROTHERPLACEPLANTPOINTRIGHTSMALLSOUNDSPELLSTILLSTUDYTHEIRTHERETHESETHINGTHINKTHREEWATERWHEREWHICHWORLDWOULDWRITE|grep `printf [%s] $@`
JavaScript (ES6), 62 octets
53 octets sur Firefox 48 ou version antérieure:
Aurait été de 49 octets sans cette exigence d'insensibilité à la casse:
Afficher l'extrait de code
la source
Brachylog , 25 octets
Les octets non comptés sont le tableau de mots, y compris les crochets.
Explication
la source
Rubis,
484239 octetsMaintenant que c'est fait, c'est très similaire à la solution Pyth,
mais sansau point où c'est fondamentalement un port direct maintenant.%s
formatageSi vous sortez uniquement le résultat avec
puts
, vous n'avez pas besoin du[0]
à la fin carputs
vous vous en occuperez.Avec les cas de test:
la source
JavaScript (ES6), 71 octets
Usage:
la source
Python,
646057 octetsCode pour créer une liste de mots
w
sous forme de chaîne, les mots sont séparés par des espaces (les octets sont actualisés de la longueur du code de la solution):Solution actuelle (57 octets): économisé 3 octets grâce à @RootTwo
Cette fonction prend un
tuple
(nonlist
!) D'exactement 5 chaînes qui représentent les lettres possibles pour chaque caractère de mot de passe en entrée.Voir ce code en cours d'exécution sur ideone.com
Deuxième version (60 octets):
Cette fonction prend un
tuple
(nonlist
!) D'exactement 5 chaînes qui représentent les lettres possibles pour chaque caractère de mot de passe en entrée.Voir ce code en cours d'exécution sur ideone.com
Première version (64 octets):
Cette fonction prend tout itérable (par exemple
list
outuple
) d'exactement 5 chaînes qui représentent les lettres possibles pour chaque caractère de mot de passe en entrée.Voir ce code en cours d'exécution sur ideone.com
la source
"(?i)\\b"+"[%s]"*5%a
w=...
ligne de code: " La solution actuelle (57 octets, économisés 3 octets grâce à @RootTwo): "Hoon , 125 octets
Non golfé:
Hoon n'a pas d'expression régulière, seulement un système de combinateur d'analyseur. Cela rend assez compliqué de tout faire fonctionner:
(mask "abc")
se traduit en gros par des regex[abc]
, et est le cœur de l'analyseur que nous construisons.;~(plug a b)
est une liaison monadique de deux analyseurs sous++plug
, qui doit analyser le premier puis le deuxième, sinon il échoue.++knee
est utilisé pour construire un analyseur récursif; nous lui donnons un type (*tape
) du résultat, et un rappel à appeler pour générer l'analyseur réel. Dans ce cas, le rappel est "appeler à nouveau la fermeture entière, mais avec la queue de la liste". La?~
rune teste la liste est vide et donne(easy ~)
(ne pas analyser quoi que ce soit et retourner ~) ou ajoute une autremask
et recurse à nouveau.Une fois l'analyseur construit, nous pouvons l'utiliser.
++skip
supprime tous les éléments de la liste pour lesquels la fonction renvoie oui pour.++rust
essaie d'analyser l'élément avec notre règle, renvoyant ununit
qui est soit[~ u=result]
ou~
(notre version de Peut-être de Haskell). Si c'est~
(Aucun, et que la règle n'a pas réussi à analyser ou n'a pas analysé l'intégralité du contenu), la fonction renvoie true et l'élément est supprimé.Ce qui reste est une liste, contenant uniquement le mot où chaque lettre est l'une des options de la liste donnée. Je suppose que la liste des mots de passe est déjà dans le contexte sous le nom
pass
.la source
Python 3, 81 octets
Une fonction anonyme qui prend l'entrée d'une liste de chaînes
x
et renvoie le mot de passe.La liste des mots de passe possibles
l
est définie comme suit:Il s'agit d'une simple force brute; J'étais intéressé de voir combien de temps je pouvais obtenir cela sans regex.
Comment ça fonctionne
Essayez-le sur Ideone
la source