Ist hier jemand ein eingefleischter Bethesda-Fan? Vielleicht bevorzugen Sie Obsidian Entertainment? Nun, wenn Sie eines dieser Dinge sind, sollte Ihnen das folgende Bild relativ vertraut sein.
Ich habe mir die Freiheit genommen, eine ziemlich einzigartige ASCII-Art-Herausforderung vorzubereiten. Hier ist der erste Hinweis darauf, was Sie tun sollen:
_____________________________________________________
/ \
| _____________________________________________ |
| | | |
| | 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 | |
| |_____________________________________________| |
| |
\_______________________________________________________/
\_______________________________________/
Dies ist eine sehr einfache (leere) Vorlage für das RobCo Fallout-Terminaldesign in reinem ASCII. Ihre Aufgabe besteht darin,
- Generieren Sie zunächst diese Vorlage.
- Geben Sie dann eine Liste mit Zeichenfolgen
l
und eine Zahl ein0 <= n <= 4
, um sie aufzufüllen!
Die zwei dynamischen Teile eines Fallout-Hacking-Terminals sind:
Die Anzahl der Versuche
- Die Anzahl der verbleibenden Versuche (angezeigt durch durch Leerzeichen begrenzte Kästchen).
- Für den Zweck dieser Herausforderung werden Sie
X
anstelle von verwenden■
.
- Für den Zweck dieser Herausforderung werden Sie
Die Passwörter
- Die durch definierten Passwörter
l
sind mit zufälligen druckbaren ASCII-Symbolen durchsetzt. - Die Kennwörter können, wie Sie anhand des Beispiels erkennen können, mehrere Zeilen umbrechen (
NAMES
). - Alle Passwörter auf dem Terminalbildschirm sollten die gleiche Chance haben, an einem beliebigen Ort zu sein.
- Es kann erwartet werden, dass alle Passwörter gleich lang sind, auch wenn dies keine Rolle spielt.
- Die Liste der Symbole nutzbar separate Passwörter sind:
!"#$%&'()*+/:;<=>?@[\]^_{|}
. - Alle Passwörter in
l
müssen gleich lang sein. - PASSWORTE MÜSSEN DAS POTENZIAL HABEN, ZWISCHEN BEIDEN SPALTEN ZU WICKELN.
- Dies gilt auch für Zeilen, jedoch nur für eine höhere Byteadresse (0x18-> 0x01 ist ungültig).
- Der Anzeigebereich für Kennwörter auf beiden Seiten ist 15 breit (mit einem Leerzeichen auf beiden Seiten).
- Sie können davon ausgehen, dass keine Wörter
l
länger als diese sind.
- Sie können davon ausgehen, dass keine Wörter
- Passwörter sind nur alphabetisch und bedeuten nur Buchstaben.
Beispiel:
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.
| |_____________________________________________| |
| |
\_______________________________________________________/
\_______________________________________/
Wenn n = 2
im selben Beispiel:
_____________________________________________________
/ \
| _____________________________________________ |
| | | |
| | 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.
| |_____________________________________________| |
| |
\_______________________________________________________/
\_______________________________________/
Diese Beispiele wurden manuell erstellt, daher ist die Verteilung leider nicht zufällig.
Dies ist Code-Golf . Die niedrigste Byte-Anzahl ist der akzeptierte Gewinner. Ich werde dies nach 3 Tagen belohnen, wenn keine Antworten für insgesamt 250 REP eingereicht wurden.
NAMES
2. Aufzählungspunkt? " Es kann erwartet werden, dass alle Passwörter gleich lang sind, auch wenn dies keine Rolle spielt. " Oder " Alle Passwörter in l müssen gleich lang sein. " Es kann sein, dass ich (wieder!) Blind bin, aber ich sehe RACES
in keiner der Ausgaben - sollten wir dies so verstehen, dass die Möglichkeit besteht, dass ein Passwort nicht verwendet wird? Ist Math.random
(und Äquivalente) für die Zwecke dieser Herausforderung ausreichend zufällig?