Montag Minigolf: Eine Reihe von kurzen Code-Golf- Fragen, die (hoffentlich!) Jeden Montag gestellt werden.
(Tut mir leid, ich bin wieder zu spät. Ich war gestern und heute im Grunde nur von meinem Computer entfernt.)
Wir Programmierer (insbesondere die Code-Golfer) lieben mit Sicherheit beliebige Ganzzahlsequenzen. Wir haben sogar eine ganze Website, die sich diesen Sequenzen widmet und derzeit rund 200.000 Einträge enthält. In dieser Herausforderung werden wir einen weiteren Satz dieser Sequenzen implementieren.
Herausforderung
Ihre Herausforderung besteht darin, ein Programm oder eine Funktion zu schreiben, die eine Ganzzahl N enthält und eine Folge von Ganzzahlen zur Basis 10 ausgibt, wobei jede nächste Ganzzahl folgendermaßen bestimmt wird:
- Beginnen Sie bei 1.
Für jede Ziffer D in der Darstellung zur Basis 10 der vorherigen Ganzzahl:
- Wenn D 0 ist, addieren Sie eins zur aktuellen Ganzzahl.
- Andernfalls wird die aktuelle ganze Zahl von multiplizieren D .
Einzelheiten
- Sie können annehmen, dass 0 < N <2 31 .
- Sie müssen jede Ganzzahl in der Sequenz ausgeben, beginnend mit der eingegebenen Nummer, bis eine Zahl unter 10 erreicht ist.
- Die Ausgabe kann ein Array oder eine durch Leerzeichen, Kommas, Zeilenumbrüche oder eine Kombination davon getrennte Zeichenfolge sein.
- Ein abschließendes Leerzeichen und / oder eine neue Zeile ist zulässig, jedoch kein abschließendes Komma.
- Es sollte niemals führende Nullen geben.
Beispiele
Beispiel 1: 77
Dieses Beispiel ist ziemlich einfach:
77 = 1*7*7 = 49
49 = 1*4*9 = 36
36 = 1*3*6 = 18
18 = 1*1*8 = 8
Somit ist die richtige Ausgabe 77 49 36 18 8
.
Beispiel 2: 90
Hier haben wir:
90 = 1*9+1 = 10
10 = 1*1+1 = 2
So wäre die Ausgabe 90 10 2
.
Beispiel 3: 806
Lesen Sie die Gleichungen von links nach rechts:
806 = 1*8+1*6 = 54 (((1*8)+1)*6)
54 = 1*5*4 = 20
20 = 1*2+1 = 3
Ausgabe sollte sein 806 54 20 3
.
Testfälle
Die erste Zahl in jeder Zeile ist die Eingabe, und die vollständige Zeile ist die erwartete Ausgabe.
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
Als Referenz sind hier die richtigen nächsten ganzen Zahlen von 10 bis 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
Sie können diese Liste zu 10000 erweitert finden hier .
Wertung
Das ist Code-Golf , also gewinnt der kürzeste gültige Code in Bytes. Tiebreaker geht zu einer Übermittlung über, die als erste ihre letzte Byteanzahl erreicht hat. Der Gewinner wird am kommenden Montag, den 19. Oktober, ermittelt. Viel Glück!
Bearbeiten: Herzlichen Glückwunsch an Ihren Gewinner, @isaacg , der Pyth noch einmal für 14 Bytes verwendet !
|*GHhG
Speichert ein Byte über?H*GHhG
.