Quelqu'un ici est un fan inconditionnel de Bethesda? Peut-être que vous préférez Obsidian Entertainment? Eh bien, si vous êtes l'une de ces choses, l'image suivante devrait vous être relativement familière.
J'ai pris la liberté de préparer un défi ASCII-Art plutôt unique, alors voici le premier indice de ce que je vais vous demander de faire:
_____________________________________________________
/ \
| _____________________________________________ |
| | | |
| | Welcome to ROBCO Industries (TM) Termlink | |
| | Password Required | |
| | Attempts Remaining: | |
| | | |
| | 0x01 | 0x0D | |
| | 0x02 | 0x0E | |
| | 0x03 | 0x0F | |
| | 0x04 | 0x10 | |
| | 0x05 | 0x11 | |
| | 0x06 | 0x12 | |
| | 0x07 | 0x13 | |
| | 0x08 | 0x14 | |
| | 0x09 | 0x15 | |
| | 0x0A | 0x16 | |
| | 0x0B | 0x17 | |
| | 0x0C | 0x18 | |
| |_____________________________________________| |
| |
\_______________________________________________________/
\_______________________________________/
Il s'agit d'un modèle très basique (vierge) pour la conception du terminal RobCo Fallout en ASCII pur, votre travail consistera à:
- Générez d'abord ce modèle.
- Ensuite, étant donné une liste de chaînes
l
et un nombre0 <= n <= 4
à remplir!
Les deux parties dynamiques d'un terminal de piratage des retombées sont:
Le nombre de tentatives
- Le nombre de tentatives restantes (indiqué par des cases séparées par des espaces).
- Aux fins de ce défi, vous utiliserez
X
au lieu de■
.
- Aux fins de ce défi, vous utiliserez
Les mots de passe
- Les mots de passe, définis par
l
, sont entrecoupés de symboles ASCII imprimables aléatoires. - Les mots de passe, comme vous pouvez le voir dans l'exemple, peuvent encapsuler plusieurs lignes (
NAMES
). - Tous les mots de passe dans l'écran du terminal devraient avoir une chance égale d'être n'importe où.
- On peut s'attendre à ce que tous les mots de passe soient de longueur égale, mais cela n'a pas d'importance.
- La liste des symboles utilisables pour séparer les mots de passe est:
!"#$%&'()*+/:;<=>?@[\]^_{|}
. - Tous les mots de passe dans
l
doivent être de longueur égale. - LES MOTS DE PASSE DOIVENT AVOIR LE POTENTIEL D'ENVELOPPER ENTRE LES DEUX COLONNES.
- Cela vaut également pour les lignes, mais uniquement pour une adresse d'octet supérieure (0x18-> 0x01 n'est pas valide).
- L'espace d'affichage des mots de passe de chaque côté est de 15 de large (avec un espace de chaque côté).
- Vous pouvez supposer qu'aucun mot
l
ne sera plus long que cela.
- Vous pouvez supposer qu'aucun mot
- Les mots de passe sont uniquement alphabétiques, c'est-à-dire uniquement des lettres.
Exemple:
l = ["SMART","ENACT","SWORE","PITYS","SMELL","CARTS","RACES"]
, n = 4
_____________________________________________________
/ \
| _____________________________________________ |
| | | |
| | Welcome to ROBCO Industries (TM) Termlink | |
| | Password Required | |
| | Attempts Remaining: X X X X | | # N = 4 drives these X's.
| | | |
| | 0x01 $?_/%$ENACT||"} | 0x0D TYS"_'$\#|^%&{} | |
| | 0x02 }:!*@{/_<"[]#>; | 0x0E #{!"^&\]'|}_[$% | |
| | 0x03 $%&'()*+/:;<\_' | 0x0F }|[(%SMELL/_$@( | |
| | 0x04 ^SMART(!@$*'^_@ | 0x10 []_#!"{|}'%$\&^ | |
| | 0x05 (*@#%}*(!%)^(_! | 0x11 %$}[!\#'^&_]{|" | |
| | 0x06 $%&'()*+/:;<_@) | 0x12 \SWORE|%'_!}\^" | |
| | 0x07 "/')=*%!&>#<:$+ | 0x13 ^{['&$|!_]%\"#} | |
| | 0x08 ;'*$&"(<%!#)RAC | 0x14 ']!|^#[$"_\}&{% | |
| | 0x09 ES:($&';%#+"<*/ | 0x15 @)($!CARTS*!@$_ | |
| | 0x0A ;'*$&"(<%!#)/+: | 0x16 !#%${"'}&[]^|_\ | |
| | 0x0B |'_!}$\%["#^{&] | 0x17 ]"_#$&}^%[{|\'! | |
| | 0x0C #{!"^&\]'|}_[PI | 0x18 _![&#{$%\^'|}"] | | # Notice how PITYS wrapped.
| |_____________________________________________| |
| |
\_______________________________________________________/
\_______________________________________/
Si n = 2
sur le même exemple:
_____________________________________________________
/ \
| _____________________________________________ |
| | | |
| | Welcome to ROBCO Industries (TM) Termlink | |
| | Password Required | |
| | Attempts Remaining: X X | | # N = 2 drives these X's.
| | | |
| | 0x01 $?_/%$ENACT||"} | 0x0D TYS"_'$\#|^%&{} | |
| | 0x02 }:!*@{/_<"[]#>; | 0x0E #{!"^&\]'|}_[$% | |
| | 0x03 $%&'()*+/:;<\_' | 0x0F }|[(%SMELL/_$@( | |
| | 0x04 ^SMART(!@$*'^_@ | 0x10 []_#!"{|}'%$\&^ | |
| | 0x05 (*@#%}*(!%)^(_! | 0x11 %$}[!\#'^&_]{|" | |
| | 0x06 $%&'()*+/:;<_@) | 0x12 \SWORE|%'_!}\^" | |
| | 0x07 "/')=*%!&>#<:$+ | 0x13 ^{['&$|!_]%\"#} | |
| | 0x08 ;'*$&"(<%!#)RAC | 0x14 ']!|^#[$"_\}&{% | |
| | 0x09 ES:($&';%#+"<*/ | 0x15 @)($!CARTS*!@$_ | |
| | 0x0A ;'*$&"(<%!#)/+: | 0x16 !#%${"'}&[]^|_\ | |
| | 0x0B |'_!}$\%["#^{&] | 0x17 ]"_#$&}^%[{|\'! | |
| | 0x0C #{!"^&\]'|}_[PI | 0x18 _![&#{$%\^'|}"] | | # Notice how PITYS wrapped.
| |_____________________________________________| |
| |
\_______________________________________________________/
\_______________________________________/
Ces exemples ont été créés manuellement, donc la distribution n'est pas aléatoire, désolé.
Il s'agit du code-golf , le nombre d'octets le plus bas sera le gagnant accepté. Je remettrai ceci après 3 jours si aucune réponse n'a été soumise pour un total de 250 REP.
NAMES
deuxième point? " Tous les mots de passe peuvent être de même longueur, mais cela n'a pas d'importance. " Ou " Tous les mots de passe de l doivent être de même longueur. "? Il se peut que je sois aveugle (encore une fois!) Mais je ne vois RACES
dans aucune des sorties - devrions-nous considérer cela comme signifiant qu'il devrait y avoir une possibilité qu'un mot de passe ne soit pas utilisé? Est - Math.random
(et équivalents) suffisamment aléatoire pour les besoins de ce défi?