Eine lexikographisch aufsteigende Zahl ist eine Ganzzahl, deren Ziffern in streng aufsteigender Reihenfolge angegeben sind. Drucken Sie alle lexikografisch aufsteigenden Zahlen unter 10000 aus.
Hier sind Zeilen der erwarteten Ausgabe:
0
1
2
3
4
5
6
7
8
9
12
13
14
15
16
17
18
19
23
24
25
26
27
28
29
34
35
36
37
38
39
45
46
47
48
49
56
57
58
59
67
68
69
78
79
89
123
124
125
126
127
128
129
134
135
136
137
138
139
145
146
147
148
149
156
157
158
159
167
168
169
178
179
189
234
235
236
237
238
239
245
246
247
248
249
256
257
258
259
267
268
269
278
279
289
345
346
347
348
349
356
357
358
359
367
368
369
378
379
389
456
457
458
459
467
468
469
478
479
489
567
568
569
578
579
589
678
679
689
789
1234
1235
1236
1237
1238
1239
1245
1246
1247
1248
1249
1256
1257
1258
1259
1267
1268
1269
1278
1279
1289
1345
1346
1347
1348
1349
1356
1357
1358
1359
1367
1368
1369
1378
1379
1389
1456
1457
1458
1459
1467
1468
1469
1478
1479
1489
1567
1568
1569
1578
1579
1589
1678
1679
1689
1789
2345
2346
2347
2348
2349
2356
2357
2358
2359
2367
2368
2369
2378
2379
2389
2456
2457
2458
2459
2467
2468
2469
2478
2479
2489
2567
2568
2569
2578
2579
2589
2678
2679
2689
2789
3456
3457
3458
3459
3467
3468
3469
3478
3479
3489
3567
3568
3569
3578
3579
3589
3678
3679
3689
3789
4567
4568
4569
4578
4579
4589
4678
4679
4689
4789
5678
5679
5689
5789
6789
Dies ist eine Code Golf Challenge! Kürzeste Antwort gewinnt!
(PS auf der Suche nach einer Python-Lösung)
code-golf
number
sequence
kolmogorov-complexity
Varun Patro
quelle
quelle
[0,1,...]
usw. getrennt ausgeben, oder müssen wir jede Zahl in einer separaten Zeile ausgeben?Antworten:
Python 2 , 56 Bytes
Probieren Sie es online!
Wandelt jede Zahl wie
124
in einen Ausdruck um1<2<4
und wertet ihn aus, um zu prüfen, ob die Ziffern sortiert sind.Ein Schluckauf passiert bei einstelligen Zahlen, die einen Ausdruck ergeben, der nur die Zahl selbst ist. Dies führt
0
dazu, dass ein falscher Wert ausgewertet wird, obwohl er gedruckt werden sollte. Dies wird durch einen Trick von Erik die Outgolfer tun vorgeschlagen festgelegt**n
, die truthy Wert gibt0**0
fürn=0
und wirkt sich nicht auf den Wahrheitswert anders.quelle
`
in`n`
?repr()
Funktion wie die Funktion ist, nicht diestr()
Funktion. Sie sind nicht immer gleich. Hier ist ein Beispiel.str()
gleichwertig ist.Python 2 , 55 Bytes
Probieren Sie es online!
quelle
Haskell , 50 Bytes
Probieren Sie es online!
Gibt eine mehrzeilige Zeichenfolge aus. Wir überprüfen die
s
Erhöhung der Anzahl anhands==scanl1(max.succ)s
einer Variante der üblichen Sortierbarkeitsprüfungs==scanl1 max s
die eine strikte Sortierung durch Inkrementieren jedes sicherstellt, bevor das Maximum davon und die nächste Ziffer genommen werden.Ourous sparte ein Byte, indem es
6^5
anstelle einer 4-stelligen Zahl die Obergrenze verwendete.quelle
Gelee , 7 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
0
es hier aufgenommen wird, aber ich kenne Jelly nicht. Stimmt es, dass Jellys Powerset das leere Array enthält, das dann konvertiert wird,0
wenn es "undecimaled" ist?Japt
-R
,12118 BytesProbier es aus
* Oder, um eine bessere Erklärung zu bieten: Die
ü
Methode sortiert ein Array und teilt es in gleiche Elemente auf (z. B.[8,4,8,4].ü() -> [[4,4],[8,8]]
) und dann, was seltsam und hoffentlich kein Fehler zu sein scheint, dieì
Methode, wenn das Array zurück in konvertiert wird Bei einer Zahl wird das erste Element jedes verschachtelten Arrays verwendet, anstatt das Array zuerst zu reduzieren. Dies habe ich erwartet, als ich diesen Trick ausprobiert habe (z[[4,4],[8,8]].ì() -> 48
. B. ).quelle
L²Ç¥ì ü ¬Ãð
ü
Trick, den ihr verwendet habt, ist genial :-) @OliverR ,
6249 BytesProbieren Sie es online!
Da
combn
die Eingabe in der angegebenen Reihenfolge durchlaufen wird, ist es einfach, alle lexikografisch aufsteigenden Ganzzahlen zu erstellen und in der angegebenen Reihenfolge auszudrucken.write
druckt jedei
zweistellige Zahl in Zeilenbreite ausi
und erfüllt damit auch die Zeilenumbruch-Anforderung.quelle
combn
!Perl 6 , 25 Bytes
-1 byte dank nwellnhof
Probieren Sie es online!
.comb
Erzeugt eine Liste der Ziffern jeder Zahl und[<]
reduziert diese weniger als, entsprechend: digit1 < digit2 <... < digitN .quelle
[<](.comb)&&.say
Speichert ein Byte.Haskell,
56BytesEdit: -1 Byte dank @Ourous
Probieren Sie es online!
quelle
Power Shell ,
42 bis40 ByteProbieren Sie es online!
Schleife von
0
nach1e4
(dh10000
). Ziehen Sie die Objekte aus , wo|?{...}
die Zahl als String$_
ist-eq
ual der Anzahl Gusst
oCharArray
und dannsort
mit der ed-u
nique Flagge. Mit anderen Worten, nur Zahlen, die den sortierten und deduplizierten Zeichenfolgen entsprechen. Jedes davon verbleibt in der Pipeline und die Ausgabe ist implizit.quelle
Pyth , 10 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
J, 26 Bytes
Probieren Sie es online!
Erläuterung
quelle
Common Lisp ,
7472 BytesProbieren Sie es online!
-2 Bytes danke an @Shaggy!
quelle
05AB1E (Legacy) , 8 Byte
Probieren Sie es online!
Funktioniert auch in der neuen Version von 05AB1E, ist aber aus irgendeinem Grund schmerzhaft langsam.
Wie?
quelle
Perl 5 , 47 Bytes
Probieren Sie es online!
Älter:
52 Bytes
quelle
Python 2 , 61 Bytes
Probieren Sie es online!
quelle
Python 2 ,
6461 BytesProbieren Sie es online!
Ruft die eindeutigen Zeichen der Zeichenfolgendarstellung der Ganzzahl ab, sortiert sie und vergleicht das Ergebnis mit der ursprünglichen Zahl.
quelle
range(9999)
oder einer anderen Nummer zwischen 6790 und 9999 speichern . Unsere Lösungen sind imV , 41 Bytes
Probieren Sie es online!
Hexdump:
quelle
Holzkohle , 19 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
quelle
Jelly ,
1398 Bytes5 Bytes gespart dank @Dennis
Probieren Sie es online!
Erläuterung
Erzeugt alle lexikographisch aufsteigenden Zahlen unter 10000, indem die Ziffern [1 ... 9] genommen und alle Kombinationen mit einer Länge ≤ 4 gefunden werden.
Jelly ,
11109 BytesDank @EriktheOutgolfer ein Byte gespeichert
Probieren Sie es online!
Erläuterung
Filtert durch den Bereich und behält die lexikografisch ansteigenden Zahlen bei.
quelle
C # (Visual C # Interactive Compiler) ,
102101... 73 Byte-12 und -4 danke @Dennis!
Probieren Sie es online!
Jede Ganzzahl von 0 bis 7k wurde getestet, indem sie zuerst in eine Zeichenfolge konvertiert wurde. Unter Ausnutzung der Tatsache, dass C # Zeichenfolgen als Zeichenaufzählungen und LINQ behandelt, wird für jedes aufzählbare Zeichen ein Aggregat wie folgt berechnet:
:
was größer ist als9
Wenn das Ergebnis kleiner als ist
:
, hat die Zahl lexikographisch ansteigende Ziffern.quelle
6789
? Dies ist weniger als7000
, so dass Sie nicht höher gehen müssen.Wolfram Language (Mathematica) , 36 Byte
Nachdem ich dies geschrieben hatte, wurde klargestellt, dass jede Nummer in einer neuen Zeile stehen muss, also +7 Bytes für die
Print/@
.Diese Methode nutzt die Tatsache, dass die
Subsets
Funktion 1) keine Ziffern repliziert und 2) die Ausgabe nach eingestellter Größe und eingestelltem Inhalt sortiert.FromDigits
stellt jede Ziffernliste zusammen.-1 Byte dank @ Mr.Xcoder
Probieren Sie es online!
quelle
Print/@FromDigits/@Range@9~Subsets~4
für 36 Bytes.K (NGN / K) / K (OK) ,
323026 BytesLösung:
Probieren Sie es online!
Erläuterung:
quelle
JavaScript REPL, 64 Bytes
Ein bisschen Kneipengolf also wohl alles andere als optimal.
Probieren Sie es online aus
Ja, es ohne IIFE zu machen, wäre ein paar Bytes kürzer, aber das führt beim Aufruf zu einem Überlauffehler, was normalerweise in Ordnung ist, da wir für die Zwecke des Codegolfs einen unendlichen Speicher annehmen können, aber für mich nicht zu sein scheint im Geiste der KC Herausforderungen.
quelle
console.log
als Ihren Beitrag zählen oder ihn neu kennzeichnen .C (GCC) ,
978981 BytesVielen Dank an Ceilingcat für -8 Bytes.
Nochmals -8 danke an Dennis
Probieren Sie es online!
quelle
Python 2 , 63 Bytes
Probieren Sie es online!
quelle
Stax , 8 Bytes
Führen Sie es aus und debuggen Sie es
quelle
Sauber , 90 Bytes
Probieren Sie es online!
quelle
Rot , 59 Bytes
Probieren Sie es online!
quelle
Gelee , 7 Bytes
Probieren Sie es online!
Wie?
quelle
MATLAB, 52 Bytes
quelle