Mini-golf del lunedì: una serie di domande sul golf a codice corto , pubblicate (si spera!) Ogni lunedì.
(Mi dispiace, sono di nuovo in ritardo; ero lontano dal mio computer praticamente tutto ieri e oggi.)
Noi programmatori (specialmente i golfisti del codice) amiamo sicuramente sequenze di numeri interi arbitrari. Abbiamo persino un intero sito dedicato a queste sequenze che attualmente ha circa 200.000 voci. In questa sfida, implementeremo ancora un'altra serie di queste sequenze.
Sfida
La tua sfida è quella di scrivere un programma o una funzione che accetta un numero intero N e genera una sequenza di numeri interi di base 10, in cui ogni numero intero successivo viene determinato in questo modo:
- Inizia da 1.
Per ogni cifra D nella rappresentazione di base 10 dell'intero precedente:
- Se D è 0, aggiungine uno all'intero corrente.
- Altrimenti, moltiplicare il numero intero corrente D .
Dettagli
- Puoi presumere che 0 < N <2 31 .
- È necessario generare ciascun numero intero nella sequenza, iniziando dal numero di input, fino a raggiungere un numero inferiore a 10.
- L'output può essere un array o una stringa separata da spazi, virgole, newline o una combinazione di questi.
- È consentito uno spazio finale e / o una nuova riga, ma non una virgola finale.
- Non dovrebbero mai esserci zero iniziali.
Esempi
Esempio 1: 77
Questo esempio è abbastanza semplice:
77 = 1*7*7 = 49
49 = 1*4*9 = 36
36 = 1*3*6 = 18
18 = 1*1*8 = 8
Pertanto, l'output corretto è 77 49 36 18 8
.
Esempio 2: 90
Qui abbiamo:
90 = 1*9+1 = 10
10 = 1*1+1 = 2
Quindi l'output sarebbe 90 10 2
.
Esempio 3: 806
Leggi le equazioni da sinistra a destra:
806 = 1*8+1*6 = 54 (((1*8)+1)*6)
54 = 1*5*4 = 20
20 = 1*2+1 = 3
L'output dovrebbe essere 806 54 20 3
.
Casi test
Il primo numero in ogni riga è l'input e la riga intera è l'output previsto.
77 49 36 18 8
90 10 2
249 72 14 4
806 54 20 3
1337 63 18 8
9999 6561 180 9
10000 5
8675309 45369 3240 25 10 2
9999999 4782969 217728 1568 240 9
1234567890 362881 2304 28 16 6
Come riferimento, ecco i numeri interi successivi corretti da 10 a 100:
Current | Next
--------+-----
10 | 2
11 | 1
12 | 2
13 | 3
14 | 4
15 | 5
16 | 6
17 | 7
18 | 8
19 | 9
20 | 3
21 | 2
22 | 4
23 | 6
24 | 8
25 | 10
26 | 12
27 | 14
28 | 16
29 | 18
30 | 4
31 | 3
32 | 6
33 | 9
34 | 12
35 | 15
36 | 18
37 | 21
38 | 24
39 | 27
40 | 5
41 | 4
42 | 8
43 | 12
44 | 16
45 | 20
46 | 24
47 | 28
48 | 32
49 | 36
50 | 6
51 | 5
52 | 10
53 | 15
54 | 20
55 | 25
56 | 30
57 | 35
58 | 40
59 | 45
60 | 7
61 | 6
62 | 12
63 | 18
64 | 24
65 | 30
66 | 36
67 | 42
68 | 48
69 | 54
70 | 8
71 | 7
72 | 14
73 | 21
74 | 28
75 | 35
76 | 42
77 | 49
78 | 56
79 | 63
80 | 9
81 | 8
82 | 16
83 | 24
84 | 32
85 | 40
86 | 48
87 | 56
88 | 64
89 | 72
90 | 10
91 | 9
92 | 18
93 | 27
94 | 36
95 | 45
96 | 54
97 | 63
98 | 72
99 | 81
100 | 3
Puoi trovare questo elenco esteso a 10000 qui .
punteggio
Questo è code-golf , quindi vince il codice valido più breve in byte. Tiebreaker va all'invio che ha raggiunto per primo il numero di byte finale. Il vincitore verrà scelto lunedì prossimo, 19 ottobre. Buona fortuna!
Modifica: Congratulazioni al tuo vincitore, @isaacg , usando ancora Pyth per 14 byte !
|*GHhG
salva un byte sopra?H*GHhG
.