Bene, il nome utente di Doorknob su GitHub, Reddit e altri siti è KeyboardFire . Questo mi dà un'idea...
L'obiettivo
Lavori presso KeyboardFire Inc., un'azienda che produce tastiere speciali. E, per "speciale", intendo che, ogni volta che premi un tasto, qualcosa nella tua casa si accende! Con la nuova serie KeyboardFire Doorknob, gli oggetti che si illuminano sul fuoco sono maniglie delle porte.
Tuttavia , a causa delle stupide normative governative, i tuoi utenti devono sapere quali pomelli della porta di casa illumineranno il fuoco.
Considera questa arte ASCII di una porzione di una tastiera QWERTY:
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
(I |
rappresentano i confini tra i tasti.)
Possiamo considerare questo esatto disegno ASCII come un "grafico" di sorta, in cui ogni carattere nell'intervallo [a-z0-9]
ha un indice x (orizzontale) e y (verticale), dove si (0,0)
trova 1
. Ad esempio, la lettera d
ha le coordinate (2,6)
(i tubi e gli spazi sono inclusi nel calcolo delle coordinate).
Ora pensiamo alla casa di ogni utente. Ogni casa può essere disegnata dall'alto in basso come un'arte ASCII 20x4 (in questo mondo in cui è legale vendere tastiere distruttive, ogni casa ha le stesse dimensioni). Possiamo usare D
's per contrassegnare le posizioni di ogni maniglia della porta della casa. Ecco un esempio:
D D D D
D
D D
La chiameremo "mappa della casa". (Sì, sono un sacco di maniglie delle porte!)
Premendo un tasto qualsiasi si accenderà la maniglia della porta più vicina. Ad esempio, se prendiamo le coordinate precedenti della lettera d
, la maniglia della porta più vicina (per distanza di Manhattan) è alle coordinate (1,4)
. Questa è la maniglia della porta che si accenderà quando la lettera d
viene colpita. Se dovessimo contrassegnare la maniglia della porta fiammeggiante con un F
, il risultato sarebbe:
D D D D
F
D D
Le specifiche
Il tuo programma avrà due input:
- Una stringa che corrisponde al modello
[a-z0-9]+
. - Una mappa di casa. Può essere una stringa, un elenco di stringhe o qualcosa di equivalente.
Devi passare attraverso ogni lettera della stringa e accendere la rispettiva maniglia della porta (cambia la sua lettera in una F
). Se la maniglia della porta più vicina è già in fiamme, lasciala così com'è. Se è presente più di una maniglia che può essere accesa con questo metodo, puoi accendere quella che desideri.
Dopo che l'intera stringa è stata elaborata in questo modo, è necessario stampare la mappa della casa risultante.
Code-golf, vince il programma più breve. Scappatoie standard vietate come al solito.
Esempio
Corda:
helloworld123
Mappa della casa:
D D D D
D
D D
Possibili risultati:
F F F D
F
D F
O:
F D F D
F
D F
O:
F F D D
F
F F
O:
F D D D
F
F F
EDIT: Uh ... c'è una ragione per cui ho una risposta, anche con una taglia +50? Se trovi le indicazioni complicate / vaghe, sarei felice se hai postato nei commenti o qualcosa del genere ... o sto facendo qualcosa di sbagliato ...
EDIT 2: Bounty scade tra meno di un giorno! Pubblica qualcos'altro! Per favore! PER FAVORE!!!! :(
d
's coords (2, 6) e not (2, 2)? 2) Perché l'esempio ha così tante risposte possibili? 3) Quando spieghi come le cose si accenderanno nel fuoco, perché stai addirittura parlandod
? Perché non dire semplicemente che premendoa
accenderai una casa in fiamme? Lod
fa anche lui?