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.
la source
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 voisRACES
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?Réponses:
JavaScript (ES8),
575568564 octetsEnregistré 3 octets grâce à @Shaggy
Prend une entrée dans la syntaxe de curry
(r)(a)
, où r est le nombre de tentatives restantes et a est le tableau de mots de passe.Surligneur de syntaxe désactivé à dessein. Il n'a aucune idée de quoi faire avec ça.
Démo
Afficher l'extrait de code
la source
Attempts Remaining:${" X".repeat(r).padEnd(8)}
?Welcome to ROBCO Industries (TM) Termlink'!Password Required#}'!Attempts Remaining:
oof ... J'aurais dû paraphraser pour enregistrer les octets langs non-golf.SOGL V0.12 , 225 octets
Essayez-le ici!
Attend l'entrée du tableau sur la pile et le nombre entré et une entrée, donc
→"
est ajouté dans le programme en ligne pour une facilité d'utilisation.la source
Perl 5 ,
588560 + 1 (-a) =589561 octetsCoupez 28 octets avec les suggestions de Dom
Essayez-le en ligne!
Précédemment:
Essayez-le en ligne!
L'entrée est sur une ligne, séparée par des espaces: d'abord les chaînes, puis le nombre
Comment?
la source
.
ne soit pas utilisé comme point décimal. Aussi pour obtenir la ponctuation, vous pouvez utiliser quelque chose comme(grep/[^\w,.`-]|_/,map{chr}33..125)
et vous n'avez pas besoin d'appelerint
sur un index de tableau! Changer lawhile
boucle en postfix et utiliser&&
au lieu deif
devrait en sauver quelques-uns aussi. Lorsque vous construisez$s
, si vous avez$s.=
à l'intérieur de la carte au lieu d'utiliserjoin
quelques gouttes de plus. J'espère que cela pourra aider!Python 3 , 585 octets
Essayez-le en ligne!
-70 octets grâce à Jonathan Allan
-9 octets grâce à moi-même (enfin!)
-72 octets grâce à notjagan
la source
JavaScript (ES8), 639 octets
Les étiquettes hexadécimales sont en minuscules; si des majuscules étaient nécessaires, ce serait 14 octets supplémentaires pour
.toUpperCase()
.Extrait de test
Mieux vu sur CodePen .
la source
repeat
.