Localizzatore del numero di stanza
Mi sono imbattuto in un'interessante tecnica di problem solving nel mio lavoro quando mi è stato dato un numero di stanza errato da un collega per una riunione. Di tanto in tanto, mentre si recano a una riunione, un membro del mio team mi invia il numero della stanza sbagliato, in genere perché hanno fretta alla loro scrivania e il dito grasso la chiave sbagliata.
È interessante notare che, all'arrivo nella stanza sbagliata, in genere riesco a indovinare quale camera intendessero davvero immaginando un tastierino numerico :
![]()
e indovinando un numero adiacente intendevano premere.
Sfida
La tua sfida è scrivere una funzione che accetta un numero di ufficio dell'edificio (000-999) e produce le possibili soluzioni di errore di battitura, supponendo che il tuo collega digiti solo una cifra.
La tabella seguente mostra quali numeri sono adiacenti l'uno all'altro su un tastierino numerico:
0 -> 1,2
1 -> 0,2,4
2 -> 0,1,3,5
3 -> 2,6
4 -> 1,5,7
5 -> 2,4,6,8
6 -> 3,5,9
7 -> 4,8
8 -> 5,7,9
9 -> 6,8
Ingresso
Un numero di 3 cifre: 000-999. Si supponga di inserire esattamente 3 cifre. Se il numero è inferiore a 100 o inferiore a 10, ti verranno dati gli zeri iniziali. (ovvero 004 e 028).
Produzione
Un elenco di possibili stanze. Questo può essere in qualsiasi forma tu voglia, purché ci sia un delimitatore tra i numeri delle stanze. (ad es. spazio, virgola, nuova riga, ecc.) Se il numero è inferiore a 100 o inferiore a 10, è possibile o meno avere gli zeri iniziali come output, dipende da te. (ovvero 004 può essere 004 04 4e 028 può essere 028 28)
Casi di test (gli zeri iniziali sono facoltativi):
008 -> 108, 208, 018, 028, 005, 007, 009
123 -> 023, 223, 423, 103, 113, 133, 153, 122, 126
585 -> 285, 485, 685, 885, 555, 575, 595, 582, 584, 586, 588
777 -> 477, 877, 747, 787, 774, 778
963 -> 663, 863, 933, 953, 993, 962, 966
555 -> 255, 455, 655, 855, 525, 545, 565, 585, 552, 554, 556, 558
Questo è code-golf , quindi vince il codice più breve in byte per ogni lingua.
933così l'ho risolto.
