Il y a 40 façons un dirigé chemin hamiltonien peut être effectué sur une grille 3 x 3:
Ce graphique ( grâce SP3000! ) Ne montre que les 20 chemins non orientés. Parcourez chaque ligne de couleur dans les deux sens pour les 40 trajectoires dirigées.
Défi
En utilisant uniquement du code ASCII imprimable , écrivez une grille de caractères 3 × 3, telle que:
ABC
DEF
GHI
Lorsque chacun des 40 chemins dirigés sont lus à partir de cette grille 40 une seule ligne, les programmes 9 caractères, l'objectif est d'avoir chaque sortie de programme un entier unique de 1 à 40. Faire cela pour tous les 40 chemins semble difficile et peu probable, il vous suffit donc de le faire fonctionner pour autant de chemins que possible.
La soumission dont les 40 programmes de trajectoire génèrent les nombres les plus distincts de 1 à 40 sera gagnante. Tiebreaker va à la soumission précédente.
Les programmes de trajectoire qui génèrent une erreur ou ne génèrent pas un entier compris entre 1 et 40 ou un autre qu'un autre programme de trajectoire déjà traité ne sont pas comptés. Plus précisément:
- Les programmes qui rencontrent des erreurs lors de la compilation, de l'exécution ou de la sortie ne sont pas comptés. Les avertissements sont ok.
- Les programmes qui ne génèrent pas un entier compris entre 1 et 40 ni un élément légèrement mal formé tel que
-35
ou35 36
ne sont pas comptés. - Les programmes qui nécessitent une entrée utilisateur pour produire la sortie ne sont pas comptés.
- Les programmes qui ne finissent jamais ne sont pas comptés.
- A partir de maintenant , les programmes qui ne sont pas déterministes ne sont pas comptés.
- Sinon, les programmes valides qui génèrent un nombre entier compris entre 1 et 40 et qui sont déjà générés par un autre programme valide ne sont pas comptés. (Le premier programme est compté.)
- Seuls les programmes qui produisent des représentations entières de nombres compris entre 1 et 40 (inclus) sont comptés dans votre total. Les chiffres devraient être l'habituel
1
,2
...,39
, le40
format, à moins que ce n'est pas la norme pour votre langue. (Un retour à la ligne dans la sortie est acceptable.) - Les numéros de sortie de vos programmes et leur ordre d'importance importent peu. Seul le nombre d'entiers distincts des programmes valables est important.
Tous les programmes de chemin doivent être exécutés dans la même langue. Cependant, les "programmes" peuvent en fait être des fonctions (sans arguments requis) ou REPL commandes , ainsi que des programmes complets, qui impriment ou renvoient leur entier cible. Vous pouvez combiner des fonctions, des commandes REPL et des programmes complets.
Vos 9 caractères ASCII imprimables ne doivent pas nécessairement être distincts.
Exemple
Si votre grille 3 × 3 était
ABC
DEF
GHI
et vos 40 programmes et sorties ressemblaient à ceci
ABCFEDGHI -> 26
ABCFIHEDG -> 90
ABCFIHGDE -> 2
ABEDGHIFC -> syntax error
ADEBCFIHG -> prints 40 but then errors
ADGHEBCFI -> 6
ADGHIFCBE -> 6
ADGHIFEBC -> 6
CBADEFIHG -> runtime error
CBADGHEFI -> 3
CBADGHIFE -> 4
CFEBADGHI -> -32
CFIHEBADG -> 38.0
CFIHGDABE -> "36"
EDABCFIHG -> 33
EFCBADGHI -> no output
EHGDABCFI -> compilation error
EHIFCBADG -> 8
GDABCFEHI -> 22
GHEDABCFI -> 41
IHGDEFCBA -> 0
GDEHIFCBA -> '9'
EDGHIFCBA -> +10
CFIHGDEBA -> 11
GHIFCBEDA -> error
IFCBEHGDA -> error
EBCFIHGDA -> prints 23 but then loops infinitely
CBEFIHGDA -> randomly prints either 24 or 44
GHIFEDABC -> error
IFEHGDABC -> 30
EFIHGDABC -> 39
IHGDABEFC -> 7
GDABEHIFC -> 29
EBADGHIFC -> -1
GHIFCBADE -> 26
IHGDABCFE -> 1
IFCBADGHE -> error
GDABCFIHE -> no output
IHEFCBADG -> no output
IFCBADEHG -> "quack"
votre score serait de 14, car il y a 14 nombres entiers distincts de 1 à 40 validés, à savoir 26 2 6 3 4 33 8 22 11 30 39 7 29 1
.
123654789