¿Alguien aquí es un fanático de Bethesda? ¿Tal vez prefieres Obsidian Entertainment? Bueno, si eres cualquiera de esas cosas, la siguiente imagen debería ser relativamente familiar para ti.
Me he tomado la libertad de preparar un desafío ASCII-Art bastante único, así que aquí está la primera pista de lo que voy a hacer que hagas:
_____________________________________________________
/ \
| _____________________________________________ |
| | | |
| | 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 | |
| |_____________________________________________| |
| |
\_______________________________________________________/
\_______________________________________/
Esta es una plantilla muy básica (en blanco) para el diseño del terminal RobCo Fallout en ASCII puro, su trabajo será:
- Primero, genere esta plantilla.
- Luego, se le da una lista de cadenas
l
y un número0 <= n <= 4
para llenarlo.
Las dos partes dinámicas de un terminal de piratería son:
El número de intentos
- El número de intentos que le quedan (indicado por cuadros delimitados por espacios).
- A los efectos de este desafío, utilizará en
X
lugar de■
.
- A los efectos de este desafío, utilizará en
Las contraseñas
- Las contraseñas, definidas por
l
, se intercalan con símbolos ASCII imprimibles al azar. - Las contraseñas, como puede ver en el ejemplo, pueden ajustar varias filas (
NAMES
). - Todas las contraseñas en la pantalla del terminal deben tener la misma posibilidad de estar en cualquier lugar.
- Se puede esperar que todas las contraseñas tengan la misma longitud, aunque esto no importa.
- La lista de símbolos utilizables para contraseñas independientes son:
!"#$%&'()*+/:;<=>?@[\]^_{|}
. - Todas las contraseñas
l
deben tener la misma longitud. - LAS CONTRASEÑAS DEBEN TENER EL POTENCIAL DE ENVOLTARSE ENTRE AMBAS COLUMNAS.
- Esto también se aplica a las filas, pero solo a una dirección de byte superior (0x18-> 0x01 no es válido).
- El espacio de visualización para las contraseñas en cada lado es de 15 de ancho (con un espacio en cada lado).
- Puede suponer que las palabras no
l
serán más largas que esto.
- Puede suponer que las palabras no
- Las contraseñas son solo alfabéticas, es decir, solo letras.
Ejemplo:
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
en el mismo ejemplo:
_____________________________________________________
/ \
| _____________________________________________ |
| | | |
| | 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.
| |_____________________________________________| |
| |
\_______________________________________________________/
\_______________________________________/
Estos ejemplos fueron diseñados manualmente, por lo que la distribución no es aleatoria, lo siento.
Este es el código de golf , el conteo de bytes más bajo será el ganador aceptado. Lo recompensaré después de 3 días si no se han enviado respuestas para un total de 250 REP.
fuente
NAMES
en el segundo punto de viñeta? " Se puede esperar que todas las contraseñas tengan la misma longitud, aunque esto no importa " o " Todas las contraseñas en l deben tener la misma longitud ". Puede que solo sea yo siendo ciego (¡otra vez!) Pero no veoRACES
en ninguno de los resultados, ¿deberíamos tomar esto para significar que debería existir la posibilidad de que no se use una contraseña? ¿EsMath.random
(y equivalentes) suficientemente aleatorio para los propósitos de este desafío?Respuestas:
JavaScript (ES8),
575568564 bytesGuardado 3 bytes gracias a @Shaggy
Toma entrada en la sintaxis de curry
(r)(a)
, donde r es el número de intentos restantes y a es la matriz de contraseñas.Marcador de sintaxis desactivado a propósito. No tiene idea de qué hacer con eso.
Manifestación
Mostrar fragmento de código
fuente
Attempts Remaining:${" X".repeat(r).padEnd(8)}
:?Welcome to ROBCO Industries (TM) Termlink'!Password Required#}'!Attempts Remaining:
oof ... Debería haber parafraseado para guardar bytes de langs que no son de golf.SOGL V0.12 , 225 bytes
Pruébalo aquí!
Espera la entrada de la matriz en la pila y la entrada del número y una entrada, por lo que
→"
se agrega en el programa en línea para facilitar su uso.fuente
Perl 5 ,
588560 + 1 (-a) =589561 bytesCorte 28 bytes con las sugerencias que Dom señaló
Pruébalo en línea!
Previamente:
Pruébalo en línea!
La entrada está en una línea, separada por espacios: primero las cadenas, luego el número
¿Cómo?
fuente
.
que no se use como punto decimal. ¡También para obtener la puntuación puede usar algo como(grep/[^\w,.`-]|_/,map{chr}33..125)
y no necesita llamarint
a un índice de matriz! Cambiar elwhile
bucle a postfix y usarlo en&&
lugar de tambiénif
debería ahorrar algunos. Cuando estás construyendo$s
, si tienes$s.=
dentro del mapa en lugar de usarjoin
gotas unas pocas más. ¡Espero que ayude!Python 3 , 585 bytes
Pruébalo en línea!
-70 bytes gracias a Jonathan Allan
-9 bytes gracias a mí (¡finalmente!)
-72 bytes gracias a notjagan
fuente
JavaScript (ES8), 639 bytes
Las etiquetas hexadecimales están en minúsculas; si se necesitara mayúscula, serían 14 bytes adicionales para
.toUpperCase()
.Fragmento de prueba
Se ve mejor en CodePen .
fuente
repeat
.