Inspiriert von A014486 .
Herausforderung
Erstellen Sie bei einer Ganzzahleingabe in Basis 10 eine Darstellung für den Binärwald, der der Eingabe entspricht. Darstellungen umfassen, ohne darauf beschränkt zu sein, verschachtelte Arrays und Zeichenfolgen.
Wie?
Konvertieren Sie die Eingabe in eine Binärdatei. 1
s stehen für Zweige und 0
s für Blätter.
Zum besseren Verständnis verwenden 834
wir als Beispiel (1101000010 in binär).
Wir beginnen mit der ersten Ziffer. Die erste Ziffer ist a 1
, also zeichnen wir Zweige:
\ / 1
oder als Array, {{1}}
Die nächste Ziffer ist 1
, also zeichnen wir mehr Zweige (wir gehen von links nach rechts):
\ / 1 \ / 1
oder als Array, {{1, {1}}}
Die nächste Ziffer ist 0
, also platzieren wir ein Blatt:
0 \ / 1 \ / 1
oder als Array, {{1, {1, 0}}}
Die nächste Ziffer ist a 1
, also platzieren wir einen Zweig:
\ / 0 1 \ / 1 \ / 1
oder als Array, {{1, {1, 0, {1}}}}
Wenn wir den Vorgang wiederholen, erhalten wir nach der achten Ziffer den folgenden Baum:
0 0 \ / 0 1 \ / 1 0 \ / 1
oder als Array, {{1, {1, 0, {1, 0, 0}}, 0}}
Für die restlichen Ziffern zeichnen wir weitere Bäume:
Die 9. Ziffer ist a 0
, also platzieren wir ein Blatt (aww, es ist ein junger Trieb!)
0 0 \ / 0 1 \ / 1 0 \ / 1 0
oder als Array, {{1, {1, 0, {1, 0, 0}}, 0}, 0}
Wenn wir alle Ziffern verwenden, erhalten wir Folgendes:
0 0 \ / 0 1 \ / 100 \ / \ / 1 0 1
oder als Array, {{1, {1, 0, {1, 0, 0}}, 0}, 0, {1, 0}}
Das sieht komisch aus, also füllen wir eine Null auf, um den Baum zu vervollständigen:
0 0 \ / 0 1 \ / 1 0 0 0 \ / \ / 1 0 1
oder als Array, {{1, {1, 0, {1, 0, 0}}, 0}, 0, {1, 0, 0}}
Beachten Sie, dass die Abflachung des Arrays die ursprüngliche Zahl in binärer Form ergibt, jedoch mit einer aufgefüllten Null.
Kriterien
- Die Ausgabe muss deutlich die Trennung der Bäume und Zweige zeigen (wenn es sich nicht um ein verschachteltes Array handelt, erläutern Sie bitte Ihr Ausgabeformat).
- Das Extrahieren aller Ziffern aus der Ausgabe muss mit der binären Darstellung der Eingabe identisch sein (mit den aufgefüllten Nullen aus dem obigen Prozess).
Testfälle
Die Ausgabe kann unterschiedlich sein, solange sie die Kriterien erfüllt.
0 -> {0} 1 -> {{1, 0, 0}} 44 -> {{1, 0, {1, {1, 0, 0}, 0}}} 63 -> {{1, {1, {1, {1, {1, {1, 0, 0}, 0}, 0}, 0}, 0}, 0}} 404 -> {{1, {1, 0, 0}, {1, 0, {1, 0, 0}}} 1337 -> {{1, 0, {1, 0, 0}}, {1, {1, {1, 0, 0}, {1, 0, 0}}, 0}}
Wertung
Das ist Code-Golf , also gewinnt das niedrigste Byte!