Geben Sie bei einer positiven Ganzzahl n
die 2^n
binären Längenfolgen aus, n
die in der folgenden genauen Reihenfolge sortiert sind.
Testfälle:
0:
0 or 1 (defining this is a matter of debate)
1:
0
1
2:
00
01
10
11
3:
000
001
010
100
011
101
110
111
4:
0000
0001
0010
0100
1000
0011
0101
1001
0110
1010
1100
0111
1011
1101
1110
1111
usw.
Zusätzlich ist das Muster der Kombinatorik mit Pascals Dreieck verwandt.
0:
1 (this is given regardless of the definition given to 2^0)
1:
1
1
2:
1
2
1
3:
1
3
3
1
4:
1
4
6
4
1
usw.
code-golf
combinatorics
binary
entschärfen
quelle
quelle
Antworten:
Haskell, 78 Bytes
Anwendungsbeispiel:
f 2
->[[0,0],[0,1],[1,0],[1,1]]
.Wie es funktioniert:
quelle
Prelude
für<$
undData.List
fürsortOn
). Außerdem: Mein Code ist kein vollständiges Programm, daher wird er nicht kompiliert.sortOn
. Ich werde vermissensortBy (compare `on` f)
.Python 2, 146 Bytes
Ich arbeite noch daran, aber alle Vorschläge wären sehr dankbar!
Ungolfed
quelle
from itertools import*
und dann einfachpermutations
im Lambda verwenden. spart 1 BytePython 2,
12212010298 Bytes18 Bytes dank Flp.Tkc gespeichert
4 Bytes dank xnor gespeichert
Erläuterung
Dies macht alle binären Zeichenfolgen der Länge x mit:
Ich sortiere sie dann nach:
sorted(x)
priorisiert die Anzahl von1
s, währendint(x[::-1],2)
die zweite Bedingung priorisiert wirdZuletzt werden diese mit Zeilenumbrüchen verbunden und gedruckt.
quelle
Perl, 63 Bytes
-4 danke an @Ton Hospel.
-2 danke an @Gabriel Benamy.
Ausführen mit
-E
(wodurch die Funktion aktiviert wirdsay
):Kurze Erklärungen :
"{1,0}"x$_
Erstellt eine Zeichenfolge aus$_
Zeiten{1,0}
($_
ist die Eingabe). Zum Beispiel mit3
:{1,1}{1,0}{1,0}
.glob
zaubert man etwas und generiert alle Kombinationen eines Elements aus jeder Gruppe von Klammern (dh alle Kombinationen, die wir drucken möchten).$b=~y/1//c-$a=~y/1//c
vergleicht die Anzahl der1
Zeichenfolgen in jeder Zeichenfolge und$b-$a
sortiert nach der zweiten Regel , wenn sie dieselbe Nummer haben .quelle
y/1//c
zuy/0//
beiden Zeiten wechselny///c
!<=>
durch-
Perl,
116106105102 BytesLesbar:
Das Unterprogramm
e
konvertiert sein Argument in einen mit Nullen aufgefüllten Binärwert als Eingabelänge (z. B. Eingabe von 5 Pads mit Nullen, bis es 5 Zeichen lang ist). Das Unterprogrammf
nimmt einen solchen Binärwert und gibt ihm eine Sortiergewichtung entsprechend der Art und Weise, wie er verarbeitet werden soll.Der Bereich 0 .. [Eingabe] 2 -1 wird dann durch eine stabile Sortierung nach Gewicht sortiert (hier bedeutet "stabil", dass zwei Werte, die das gleiche Gewicht haben, in der Reihenfolge zurückgegeben werden, in der sie in der erscheinen Eingabe), und dann werden sie an das Unterprogramm zurückgeführt
e
und ausgegeben.Einige von Ihnen haben vielleicht meinen ursprünglichen Beitrag gesehen, aber ich habe das Problem gestern völlig falsch verstanden und es sofort gelöscht, nachdem ich es erkannt habe.
quelle
n>=5
. Zum Beispiel kommt mitn>=5
,01101
kommt vorher,10011
aber es sollte nach sein.Schläger 109 Bytes
Ungolfed:
Testen:
Ausgabe:
quelle
Ruby 2.x, 129 Bytes
quelle
PHP, 49 Bytes
Laufen Sie mit
-r
.quelle
MATLAB, 68 Bytes
quelle
Bash, 65 Bytes
Golf gespielt
Prüfung
quelle
Gelee , 14 Bytes
Probieren Sie es online aus!
Überrascht, dass dies noch nicht veröffentlicht wurde.
quelle