Inspiriert von Erstellen Sie eine binäre Wand
Ausgehend von einer Liste positiver Ganzzahlen können wir sie wie folgt übereinander schreiben [2, 6, 9, 4]
:
0010
0110
1001
0100
Wir können uns das als Wand vorstellen:
..#.
.##.
#..#
.#..
Dies ist jedoch eine sehr schwache Mauer, die eingestürzt ist! Jedes 1
( #
) fällt herunter, bis es auf den "Boden" oder ein anderes 1
( #
) trifft . Die 0
s ( .
s) sind an Stellen vorhanden, die von bewegten 1
s übrig bleiben .
Dies wird wie folgt:
....
....
.##.
####
Was übersetzt zurück zu:
0000
0000
0110
1111
Was als Liste von Zahlen ist [0, 0, 6, 15]
.
Ein weiterer Testfall
[10, 17, 19, 23]
Dies wird:
01010
10001
10011
10111
was wird:
00000
10011
10011
11111
zurück zu übersetzen:
[0, 19, 19, 31]
Herausforderung
Wenden Sie diese Transformation bei einer Liste positiver Ganzzahlen auf die Liste an. Eingabe / Ausgabe als Liste positiver Ganzzahlen in einem beliebigen Format. Es gelten Standardlücken.
Dies ist ein Code-Golf , also gewinnt die kürzeste Antwort in Bytes!
quelle
Antworten:
MATL , 4 Bytes
Probieren Sie es bei MATL Online aus
Erläuterung
quelle
Python , 68 Bytes
Probieren Sie es online!
quelle
JavaScript (ES6), 50 Byte
Erläuterung: Angenommen, zwei Zeilen der Wand lauten wie folgt:
Das Ergebnis muss sein:
Mit anderen Worten wird die erste Zeile zum UND der beiden Zeilen und die zweite Zeile zum ODER der beiden Zeilen. Dies muss nur so oft wiederholt werden, dass alle Bits auf den Grund fallen.
quelle
Gelee , 9 Bytes
Probieren Sie es online!
quelle
Japt , 16 Bytes
Probieren Sie es online! Verwenden Sie das
-Q
Flag, um das Array-Ergebnis zu formatieren.Erläuterung
quelle
mì2 z3 mn z mì2
null
Leerzeichen aufgefüllt . Das scheint also nicht zu funktionieren. Undnull
ist rechts vom1
s sortiert, im Gegensatz zu Leerzeichen, die links sortiert sind.Mathematica, 64 Bytes
ist
\[Transpose]
Dies wandelt die Eingabe (eine Liste von Zahlen) in eine Liste von Ziffernlisten um, füllt sie als quadratische Matrix auf, transponiert sie, sortiert die Zeilen so, dass die Einsen nach unten fallen, transponiert zurück und wandelt sie dann wieder in Zahlen um .
quelle
Python 3.5 , 60 Bytes
Probieren Sie es online!
Nimmt Eingaben wie
f(2, 6, 9, 4)
. Angenommen, die Eingabe ist nicht leer. Verwendet viel Tupel-Auspacken .quelle
Oktave,
2925 Bytes4 Bytes gespart dank @Stewie
quelle
de2bi/bi2de
Speichert 4 Bytes in Oktave. Funktioniert auf octave-online.net.J , 13 Bytes
Probieren Sie es online!
Erläuterung
quelle
<convert from binary> <transpose> <sort each row> <transpose> <convert to binary> M
, dass die ersten beiden Funktionen nur die Umkehrungen der letzten beiden Funktionen sind.05AB1E , 9 Bytes
Probieren Sie es online!
Ein bisschen anderer Algorithmus als bei Magic.
quelle
ζ
, verdammt. Meins gelöscht, nimm mein +1.Dyalog APL,
242119 BytesProbieren Sie es online! (so geändert, dass TryAPL es als gültig akzeptiert)
Wie?
⎕
ausgewertete Eingabe (Arrays sind durch Leerzeichen getrennt)2⊥⍣¯1⊢
konvertiert jedes Argument in ein Binärargument (umgesetzt von dem, was in Frage kommt)↓
verwandelt ein 2D-Array in einen Vektor von Vektoren{⍵[⍋⍵]}¨
sortiert jedes der Elemente des Vektors↑
verwandelt den Vektor von Vektoren wieder in ein 2D-Array2⊥
konvertiere von binär (da es es irgendwie transponiert, kommen wir zum richtigen Ergebnis)quelle
Dyalog APL (23 Zeichen)
Beispiel
Vielen Dank an Zacharý für die Korrektur.
quelle
(⊥⍣¯1)⍵
mit ersetzen⊥⍣¯1⊢⍵
. Ich glaube auch nicht, dass Sie die Achsenspezifikation beim Teilen (↓[1]
=>↓
) benötigen .⊥⍣¯1
Muss wirklich eingebaut sein). Und vielen Dank, dass Sie meinen Benutzernamen richtig eingegeben haben.JavaScript,
127125 BytesProbieren Sie es online aus
-2 Bytes dank Kühe quaken
quelle
(1<<c)&e
kann werden2**c&e
Python 2, 142 Bytes
... und immer noch Golf spielen ... hoffentlich –– Jede Hilfe wird geschätzt!
Ein großer Teil davon dient zum Auffüllen der Zahlen mit Nullen.
Besser lesbar:
Dadurch wird ein Array der binären Zeichenfolgendarstellungen erstellt, aufgefüllt, um 90 ° im Uhrzeigersinn gedreht, jede Zeile sortiert, um 90 ° zurückgedreht und dann aus jeder Zeile Ganzzahlen erstellt.
quelle