Alguém aqui é um fã obstinado da Bethesda? Talvez você prefira a Obsidian Entertainment? Bem, se você é uma dessas coisas, a imagem a seguir deve ser relativamente familiar para você.
Tomei a liberdade de preparar um desafio ASCII-Art bastante singular, então aqui está a primeira pista sobre o que vou fazer com que você faça:
_____________________________________________________
/ \
| _____________________________________________ |
| | | |
| | 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 | |
| |_____________________________________________| |
| |
\_______________________________________________________/
\_______________________________________/
Este é um modelo (em branco) muito básico para o design do terminal RobCo Fallout em ASCII puro, seu trabalho será:
- Primeiro, gere este modelo.
- Então, dada uma lista de strings
l
e um número0 <= n <= 4
para preenchê-lo!
As duas partes dinâmicas de um terminal de hacking de precipitação são:
O número de tentativas
- O número de tentativas restantes (indicadas por caixas delimitadas por espaço.
- Para o objetivo deste desafio, você usará em
X
vez de■
.
- Para o objetivo deste desafio, você usará em
As senhas
- As senhas, definidas por
l
, são intercaladas com símbolos ASCII imprimíveis aleatórios. - As senhas, como você pode ver pelo exemplo, podem quebrar várias linhas (
NAMES
). - Todas as senhas na tela do terminal devem ter a mesma chance de estar em qualquer lugar.
- Pode-se esperar que todas as senhas tenham o mesmo comprimento, embora isso não importe.
- A lista de símbolos utilizáveis para separar senhas são:
!"#$%&'()*+/:;<=>?@[\]^_{|}
. - Todas as senhas em
l
devem ter o mesmo comprimento. - AS SENHAS DEVEM TER POTENCIAL DE ENVOLVER ENTRE AMBAS AS COLUNAS.
- Isso também vale para linhas, mas apenas para um endereço de bytes mais alto (0x18-> 0x01 é inválido).
- O espaço de exibição de senhas em ambos os lados tem 15 de largura (com um espaço em ambos os lados).
- Você pode assumir que nenhuma palavra
l
será maior que isso.
- Você pode assumir que nenhuma palavra
- As senhas são apenas alfabéticas, significando apenas letras.
Exemplo:
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.
| |_____________________________________________| |
| |
\_______________________________________________________/
\_______________________________________/
Se n = 2
no mesmo exemplo:
_____________________________________________________
/ \
| _____________________________________________ |
| | | |
| | 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.
| |_____________________________________________| |
| |
\_______________________________________________________/
\_______________________________________/
Esses exemplos foram criados manualmente, então a distribuição não é aleatória, desculpe.
Este é o código-golfe , o menor número de bytes será o vencedor aceito. Recompensarei isso após 3 dias, se nenhuma resposta tiver sido enviada para um total de 250 REP.
NAMES
no 2º marcador? " Pode-se esperar que todas as senhas tenham o mesmo comprimento, embora isso não importe. " Ou " Todas as senhas em l devem ter o mesmo comprimento. "? Pode ser que eu esteja cego (de novo!), Mas não vejo RACES
em nenhum resultado - devemos considerar isso como uma possibilidade de uma senha não estar sendo usada? É Math.random
(e equivalentes) suficientemente aleatório para os objetivos deste desafio?