Wie sich herausstellt, ist der Benutzername von Doorknob auf GitHub, Reddit und anderen Websites KeyboardFire . Das gibt mir eine Idee ...
Die Aufgabe
Sie arbeiten bei KeyboardFire Inc., einem Unternehmen, das Spezialtastaturen herstellt. Und mit "speziell" meine ich, dass jedes Mal, wenn Sie eine Taste drücken, etwas in Ihrem Haus in Flammen steht! Bei der neuen KeyboardFire Doorknob-Serie sind die Objekte, die in Flammen stehen, Türklinken.
Aufgrund dummer staatlicher Vorschriften müssen Ihre Benutzer jedoch wissen, welche Türklinken in ihrem Haus brennen.
Betrachten Sie diese ASCII-Grafik eines Teils einer QWERTZ-Tastatur:
1|2|3|4|5|6|7|8|9|0
q|w|e|r|t|y|u|i|o|p
a|s|d|f|g|h|j|k|l
z|x|c|v|b|n|m
(Die |
's stellen die Grenzen zwischen den Schlüsseln dar.)
Wir können diese genaue ASCII Zeichnung als „Grafik“ , der Art zu behandeln, wobei jedes Zeichen in dem Bereich [a-z0-9]
ein x hat (horizontal) und y (vertikal) Index, wobei (0,0)
ist 1
. Zum Beispiel hat der Buchstabe d
die Koordinaten (2,6)
(Rohre und Zwischenräume werden in die Koordinatenberechnung einbezogen).
Lassen Sie uns nun über das Haus eines jeden Benutzers nachdenken. Jedes Haus kann als 20x4 ASCII-Grafik von oben nach unten gezeichnet werden (in dieser Welt, in der es legal ist, zerstörerische Tastaturen zu verkaufen, hat jedes Haus die gleiche Größe). Mit D
's können wir die Positionen der einzelnen Türklinken im Haus markieren. Hier ist ein Beispiel:
D D D D
D
D D
Wir nennen dies die "Hauskarte". (Ja, das sind viele Türklinken!)
Durch Drücken einer beliebigen Taste wird der nächste Türknauf in Brand gesetzt. Nehmen wir zum Beispiel die vorherigen Koordinaten des Buchstabens d
, befindet sich der nächste Türknauf (in Manhattan-Entfernung) an den Koordinaten(1,4)
. Dies ist die Türklinke, die in Flammen aufleuchtet, wenn der Buchstabe d
getroffen wird. Wenn wir den brennenden Türknauf mit einem markieren F
würden, wäre das Ergebnis:
D D D D
F
D D
Die Spezifikationen
Ihr Programm nimmt zwei Eingaben entgegen:
- Eine Zeichenfolge, die dem Muster entspricht
[a-z0-9]+
. - Eine Hauskarte. Dies kann eine Zeichenfolge, eine Liste von Zeichenfolgen oder etwas Äquivalentes sein.
Sie müssen jeden Buchstaben der Schnur durchgehen und den entsprechenden Türknauf in Brand setzen (ändern Sie den Buchstaben in einen F
). Wenn der nächste Türknauf bereits in Brand ist, lassen Sie ihn unverändert. Wenn mit dieser Methode mehr als eine Türklinke in Brand gesetzt werden kann, können Sie jede beliebige Türklinke anzünden.
Nachdem die gesamte Zeichenfolge auf diese Weise verarbeitet wurde, müssen Sie die resultierende Hauskarte drucken.
Code-Golf, so gewinnt das kürzeste Programm. Standard-Schlupflöcher wie gewohnt verboten.
Beispiel
Zeichenfolge:
helloworld123
Hauskarte:
D D D D
D
D D
Mögliche Ergebnisse:
F F F D
F
D F
Oder:
F D F D
F
D F
Oder:
F F D D
F
F F
Oder:
F D D D
F
F F
EDIT: Äh ... gibt es einen Grund, warum ich eine Antwort habe, auch mit einer Prämie von +50? Wenn Sie die Anweisungen kompliziert / vage finden, wäre ich froh, wenn Sie in den Kommentaren oder etwas gepostet ... oder ich mache etwas falsch ...
EDIT 2: Bounty läuft in weniger als einem Tag ab! Posten Sie etwas anderes! Bitte! BITTE!!!! :(
d
die Koordinaten (2, 6) und nicht (2, 2)? 2) Warum hat das Beispiel so viele mögliche Antworten? 3) Wenn du erklärst, wie die Dinge in Flammen aufgehen, warum redest du überhauptd
? Warum nicht direkt sagen, dass durch Drücken vona
ein Haus in Brand gerät? Tutd
es auch?