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.
quelle
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 seheRACES
in keiner der Ausgaben - sollten wir dies so verstehen, dass die Möglichkeit besteht, dass ein Passwort nicht verwendet wird? IstMath.random
(und Äquivalente) für die Zwecke dieser Herausforderung ausreichend zufällig?Antworten:
JavaScript (ES8),
575568564 Bytes3 Bytes gespart dank @Shaggy
Nimmt Eingaben in Curry-Syntax vor
(r)(a)
, wobei r die Anzahl der verbleibenden Versuche und a das Array von Kennwörtern ist.Syntax-Textmarker absichtlich deaktiviert. Es hat keine Ahnung, was damit zu tun ist.
Demo
Code-Snippet anzeigen
quelle
Attempts Remaining:${" X".repeat(r).padEnd(8)}
?Welcome to ROBCO Industries (TM) Termlink'!Password Required#}'!Attempts Remaining:
oof ... Ich hätte umschreiben sollen, um nicht-golfende langs Bytes zu sparen.SOGL V0.12 , 225 Bytes
Probieren Sie es hier aus!
Erwartet eine Array-Eingabe auf dem Stapel und eine Zahleneingabe und eine Eingabe, so
→"
wird sie zur Vereinfachung im Online-Programm hinzugefügt.quelle
Perl 5 ,
588560 + 1 (-a) =589561 BytesSchneiden Sie 28 Bytes mit den Vorschlägen, auf die Dom hingewiesen hat
Probieren Sie es online!
Vorher:
Probieren Sie es online!
Die Eingabe erfolgt in einer Zeile, die durch ein Leerzeichen getrennt ist: Zuerst die Zeichenfolgen, dann die Nummer
Wie?
quelle
.
nicht als Dezimalpunkt verwendet wird. Um die Interpunktion zu erhalten, können Sie auch so etwas verwenden,(grep/[^\w,.`-]|_/,map{chr}33..125)
und Sie müssen keinenint
Array-Index aufrufen ! Wenn Sie diewhile
Schleife auf postfix ändern und&&
anstelle von verwenden,if
sollten Sie auch einige speichern. Beim Bauen$s
, wenn Sie$s.=
innerhalb der Karte haben, anstattjoin
Tropfen ein paar mehr zu verwenden. Ich hoffe, das hilft!Python 3 , 585 Bytes
Probieren Sie es online!
-70 Bytes dank Jonathan Allan
-9 Bytes dank mir (endlich!)
-72 Bytes dank Notjagan
quelle
JavaScript (ES8), 639 Byte
Die hexadezimalen Bezeichnungen sind in Kleinbuchstaben angegeben. Wenn Großbuchstaben erforderlich wären, wären dies zusätzliche 14 Byte für
.toUpperCase()
.Testschnipsel
Besser drüben auf CodePen zu sehen .
quelle
repeat
.