Bei einer gegebenen Binärzahl besteht Ihre Aufgabe darin, eine Verzweigung dieser Zahl mit einer Tiefe von 2 zu erstellen.
Beispielsweise 0
sollten Sie als Eingabe genau Folgendes ausgeben:
/000
/00
/ \001
0
\ /010
\01
\011
Dies sollte ziemlich selbsterklärend sein, wie die Zweige erstellt werden sollten. Tiefe 2 bedeutet, dass wir Zweige für Nummern mit einer Länge von bis zu 2 Nummern berechnen. Wir berechnen auch die Zweige in der Reihenfolge, mit Nullen oben und Einsen unten.
Weitere Testfälle:
0
/000
/00
/ \001
0
\ /010
\01
\011
1
/100
/10
/ \101
1
\ /110
\11
\111
00
/0000
/000
/ \0001
00
\ /0010
\001
\0011
01
/0100
/010
/ \0101
01
\ /0110
\011
\0111
10
/1000
/100
/ \1001
10
\ /1010
\101
\1011
11
/1100
/110
/ \1101
11
\ /1110
\111
\1111
Regeln
- Sie erhalten in der Eingabe niemals andere Zeichen als
1
und0
. 0 < length of input < 11
.- Leerzeichen am Zeilenende dürfen nachgestellt werden.
0 < length of input < 11
ist11
dezimal oder binär? : PAntworten:
Jelly ,
3938 BytesProbieren Sie es online!
Wie?
Die zu druckende Kunst ist:
Wo
N
ist die Eingabezeichenfolge undL
ist eine Zeichenfolge von Leerzeichen der Länge der Eingabezeichenfolge.Als solche ist sie von acht Komponenten besteht (
L
,N
,/
,0
, die Zeilenende- Zeichen,\
,1
, und das Leerzeichen) , und somit können als Basis-8 - Nummer gespeichert werden (was als Basis-250 - Nummer in Jelly komprimiert werden kann). Dasṃ
Atom kombiniert Basiskonvertierung und Indexierung in einer Liste (effektiv kann man beliebige zu verwendende Ziffern definieren).quelle
Batch,
178170159 BytesBearbeiten: 11 Bytes dank @ ConorO'Brien gespeichert.
quelle
JavaScript (ES6), 112 Byte
Demo
Code-Snippet anzeigen
quelle
[n,n,s.replace(/./g,' '),s,'\\'][n]
?/\d/g
anstatt sie/./g
zu ignorieren.Python 3 ,
117109 BytesProbieren Sie es online!
Die Formatzeichenfolge sieht beim Drucken folgendermaßen aus:
Dies sieht bereits für eine Zeichenfolge der Länge 1 gut aus. Wir müssen nur l durch Leerzeichen der Länge g ersetzen, und natürlich muss g durch die ursprüngliche Zeichenfolge ersetzt werden
quelle
Python 3.6,
172153128 BytesEinfacher geht es buchstäblich nicht ... Das ist eigentlich kürzer als mein ursprünglicher Versuch, es mit einem Algorithmus zu generieren. Wie traurig.
-19 Bytes dank @Leo
-25 Bytes dank @ L3viathan
quelle
b*2+' '
)print(f'{a}/{k}00\n{b} /{k}0\n{b}/ {b}\\{k}01\n{k}\n{b}\\ {b}/{k}10\n{b} \\{k}1\n{b*2} \\{k}01')
C
170168 BytesVielen Dank an @Neil für das Speichern von zwei Bytes!
Probieren Sie es online!
quelle
/
oder` padded to width
n + 1, why not print a space, and then a
/ `zu drucken oder\
auf Breite zu setzenn
?/
oder\
gepolstert , um Breiten+1
, warum nicht einen Raum zu drucken, und dann einem/
oder\
auf der Breite gepolsterten
?Python 3 , 96 Bytes
Probieren Sie es online! Die nicht druckbaren Zeichen werden nicht korrekt angezeigt. Das Format der Zeichenkette ist dasselbe wie das von officialaimm , jedoch mit
\x01
forl
und\x02
forg
.Verwendet die Zeichenfolgensubstitution in Python 3's flexible
translate
. Die Liste übersetzen[s,' '*len(s),s]
Karten\x01
zu' '*len(s)
und\x02
zus
. Alle größeren Zeichen bleiben unverändert, da sie Indizes enthalten, die für die Liste außerhalb des zulässigen Bereichs liegen.\x00
konnte nicht verwendet werden, da ein Null-Byte als Programmende gelesen wird und der erste Eintrag verschwendet wird.quelle
PHP , 128 Bytes
Nur eine einfache Ausgabe
Probieren Sie es online!
quelle
Gestapelt , 81 Bytes
Probieren Sie es online!
Leider nicht sehr interessant. Hier ist der interessanteste Teil:
Dies ist im Grunde eine String-Interpolation, die jedoch 10 Byte kürzer ist als die eingebaute.
quelle
/// 116 Bytes
Probieren Sie es online!
Die Eingabe ist wie folgt:
Arbeitet mit einer einfachen Vorlage und fügt bei Bedarf Leerzeichen und Zeichen hinzu.
Die Byteanzahl stieg, weil Ørjan Johansen erkannte, dass der Abstand zunächst nicht verarbeitet wurde. Aber das Problem ist bekanntlich behoben.
quelle
/*/\/y0\/ y\/\/y1\/ y\//**********/y///s/yx/
und dann bekommst du Abstand mits
./00/0|0//01/0|1//10/1|0//11/1|1//|/<\\y>//z/<y>x//<y>0/ //<y>1/ //<\\y\>///s/z/
kann beliebige Längen verarbeiten.Python 2 ,
101,91 Bytes113 BytesProbieren Sie es online!
Die Eingabe ist eine Folge von Nullen und Einsen der Länge 1 oder 2! Das ist 0,01,10 oder 11!
+12 Bytes - korrigiert den Abstand in \ für die Eingabe der Länge zwei.
quelle
0 < length of input < 11
" an.Kohle , 34 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Drucken Sie die linken Paare von
/
s und\
s.Gibt die Eingabe rechtsbündig an der aktuellen Position aus.
Schlinge dich durch die Zweige.
Verschieben Sie die Position des Zweigs. Wir können dies tun, weil die Wurzel rechtsbündig gedruckt wurde, so dass der mittlere Zweig immer an der gleichen absoluten Position ist.
Die Eingabe drucken.
Drucken Sie das richtige Paar von
/
und aus\
.Drucken Sie das Zweigsuffix.
Gehe zum ersten Blatt.
Schlaufe durch die Blätter.
Drucken Sie die Eingabe und das Suffix für Zweig und Blatt.
Gehen Sie zum nächsten Blatt. Hinweis: Wenn abschließendes Leerzeichen zulässig ist
F²⁺⁺⁺θι궶
, wird ein Byte gespeichert.quelle