Ordnen Sie die Zahlen in einer geordneten Liste (möglicherweise mit führenden Nullen) vertikal an, und lassen Sie alle Nullen ganz nach unten und alle Überhänge ganz nach unten fallen. Geben Sie die resultierenden Ganzzahlen aus, wobei Sie führende Nullen entfernen.
Gearbeitetes Beispiel
Angenommen, wir erhielten als Eingabe Folgendes:
['0000312941295', '239124000124581598', '32852353800451258', '10235923505185190', '1491359102149']
Zuerst ordnen wir es vertikal an:
0000312941295
239124000124581598
32852353800451258
10235923505185190
1491359102149
Dann lassen Sie die Nullen Spalte für Spalte "durch" die anderen Zahlen fallen, so dass sie unten liegen, und "drücken" Sie die anderen Zahlen nach oben. Dies würde dazu führen, dass die ersten paar Schritte wie folgt aussehen:
2000312941295
339124000124581598
12852353800451258
10235923505185190
0491359102149
^
2300312941295
329124000124581598
14852353800451258
10235923505185190
0091359102149
^
2390312941295
328124000124581598
14252353800451258
10935923505185190
0001359102149
^
...
2391312941295
328524538124581598
14232323525451258
10915991001185190
0000350000049
^
Lassen Sie als nächstes alle Überhänge fallen, als würde die Schwerkraft sie wie Sand nach unten ziehen.
2391312941295
3285245381245 1598
14232323525458258
10915991001181190
00003500000495
^
2391312941295
3285245381245 598
14232323525458158
10915991001181290
000035000004951
^
...
2391312941295
3285245381245
14232323525458159
10915991001181258
000035000004951908
^
Geben Sie zum Schluss diese Zahlen aus und entfernen Sie die führenden Nullen. In unserem Beispiel geben Sie Folgendes aus:
[2391312941295, 3285245381245, 14232323525458159, 10915991001181258, 35000004951908]
Nehmen wir für ein anderes Beispiel die Eingabe von an [1234000,12345678,1234,12340608,12341234]
.
1234000
12345678
1234
12340608
12341234
Lass die Nullen fallen:
1234
12345678
1234163
12340208
12340004
Löschen Sie die verbleibenden überhängenden Ziffern:
1234
1234567
12341638
12340208
12340004
Ausgabe ist [1234, 1234567, 12341638, 12340208, 12340004]
.
Regeln
- Die Eingabe kann führende Nullen enthalten. Die Ausgabe darf keine führenden Nullen enthalten.
- Gegebenenfalls können Sie davon ausgehen, dass die Eingabe / Ausgabe in den systemeigenen Integer-Typ Ihrer Sprache passt.
- Die Eingabe und Ausgabe kann durch jede bequeme Methode erfolgen .
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig. Bei einer Funktion können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
quelle
14232323525458159
um14232323525458160
)and all overhangs drop to the bottom-most open slot
war eine gute Lösung für meine kaputte Herausforderung :).. 1234
sich stark von der Ausgabe unterscheidet1234
.Antworten:
Gelee , 8 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Sort each row of the transpose by logical NOT, pushing 0's to the end.
Ist dies garantiert eine stabile Sorte?sorted
, die garantiert stabil sind.ṚZẸÞ€ZṚḌ
:)05AB1E , 11 Bytes
Probieren Sie es online!
quelle
†
, nette.Schale , 12 Bytes
Probieren Sie es online!
Erläuterung
quelle
Python 2 , 118 Bytes
Probieren Sie es online!
Ungolfed-Version
Die ersten beiden Zeilen entsprechen
map(lambda*a...)
dem Standardverhalten, wennmap
zum Füllen mitNone
s eine Liste kürzer als die andere ist.e>'0'
ist äquivalent zucell != '0' and cell != None
, denn wenn es sich um eine Ziffer (1 ~ 9) handelt, hat sie einen höheren Codepunkt und (eine) Zeichenfolge ist höher alsNone
.quelle
Pyth , 11 Bytes
Probieren Sie es online!
quelle
Retina 0.8.2 ,
9592 BytesProbieren Sie es online! Erläuterung: In der ersten Stufe werden die überhängenden Ziffern gelöscht, da in der zweiten Stufe die Nullen leichter gelöscht werden können (Bearbeitung: noch einfacher beim Speichern von 3 Byte). Die dritte Stufe entfernt dann führende Nullen.
quelle
Rubin , 104 Bytes
Probieren Sie es online!
Erläuterung
quelle
APL (Dyalog Unicode) , 26 Byte SBCS
Anonyme implizite Präfixfunktion, die eine Zeichenmatrix als Argument verwendet und eine Liste von Zahlen zurückgibt.
Probieren Sie es online!
⍉
transponiere die Eingabe (da wir an den Spalten arbeiten müssen)' 0'(
…)⍤1⍨
Wende die folgende implizite Funktion auf jede Zeile (Unterarray von Tensorrang 1) mit' 0'
dem richtigen Argument an (⍨
vertauscht die Argumente):∩
Schnittpunkt der Reihe und∘
und⊃
des ersten von' 0'
(dh
row∩' '
alle Leerzeichen aus jeder Reihe),
gefolgt von…~
die eingestellte Differenz(dh
row~' 0'
die Zeile aber ohne Leerzeichen und Nullen),
gefolgt von…∩
Schnittpunkt der Reihe und∘
und⊃
die erste∘
von⌽
der umgekehrt' 0'
(dh
row∩'0'
, alle Nullen von jeder Reihe)⍎⍤1
auswerten jede Zeile (sub-Array von Tensor mit Rang 1)∘
der⍉
die Transponierte daß (dh jede Spalte, die nun modifizierte Eingang Zeilen)quelle
⍎⍤1∘⍉{⍵[⍋3|2×' 0'⍳⍵]}⍤1∘⍉
(⎕io←0
) Es ist möglicherweise weiter golfbar, z. B. habe ich⍋
⍎⍤1⍉{⍵[⍋3|2×' 0'⍳⍵]}⍤1⍉⎕
Perl 5 , -p0 77 Bytes
Zählung nach alter Art: 79 Bytes (
+2
fürp0
)Geben Sie die Eingabe als Zeilen in STDIN ohne abschließende neue Zeile ein (andernfalls wird alles als Überhang angesehen und die abschließende neue Zeile steigt nach oben, wenn die Eingabezeichenfolge abstürzt). Z.B:
Es war ein bisschen schwierig, den Überhang fallen zu lassen und
0
in eine Regex zu fallenProbieren Sie es online!
quelle
Rubin , 203 Bytes
Probieren Sie es online!
Ein Lambda, das eine Reihe von Zeichenfolgen akzeptiert und eine Reihe von Ints zurückgibt. Ich habe das Gefühl, etwas zu vermissen. das fühlt sich enorm an: /
quelle
APL (Dyalog Classic) ,
242322 BytesProbieren Sie es online!
basierend auf Adams Lösung
quelle