Biorąc pod uwagę liczbę binarną, Twoim zadaniem jest utworzenie „gałęzi” tej liczby o głębokości 2.
Na przykład podany 0
jako dane wejściowe powinieneś wypisać dokładnie to:
/000
/00
/ \001
0
\ /010
\01
\011
Powinno to wyjaśniać, w jaki sposób należy tworzyć oddziały. Głębokość 2 oznacza, że obliczamy gałęzie dla liczb do 2 liczb dłuższych. Gałęzie obliczamy również w kolejności, z zerami na górze i zerami na dole.
Więcej przypadków testowych:
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
Zasady
- Nigdy nie otrzymasz znaków na wejściu innych niż
1
i0
. 0 < length of input < 11
.- Końcowe białe znaki dozwolone na końcu linii.
0 < length of input < 11
jest11
dziesiętny czy binarny? : POdpowiedzi:
Galaretka ,
3938 bajtówWypróbuj online!
W jaki sposób?
Sztuka do wydrukowania to:
Gdzie
N
jest ciąg wejściowy iL
jest ciągiem spacji o długości wejściowego ciągu.Jako takie składa się z ośmiu elementów (
L
,N
,/
,0
, znak nowej linii,\
,1
, a znak spacji), w związku z tym mogą być przechowywane w postaci wielu baza-8 (który może być ściskany za pomocą numeru w galarecie baza-250).ṃ
Łączy atom konwersji podstawy i indeksowania na liście (w praktyce można określić dowolnych cyfr do stosowania).źródło
Partia,
178170159 bajtówEdycja: Zapisano 11 bajtów dzięki @ ConorO'Brien.
źródło
JavaScript (ES6), 112 bajtów
Próbny
Pokaż fragment kodu
źródło
[n,n,s.replace(/./g,' '),s,'\\'][n]
?/\d/g
raczej szukania niż/./g
ignorowania znaków nienumerycznych.Python 3 ,
117109 bajtówWypróbuj online!
Łańcuch formatu po wydrukowaniu wygląda następująco:
Wygląda to dobrze już dla ciągu o długości 1. Wszystko, co musimy zrobić, to zastąpić l odstępami długości równymi g i oczywiście g należy zastąpić oryginalnym ciągiem
źródło
Python 3.6,
172153128 bajtówDosłownie nie staje się prostsze niż to ... To jest faktycznie krótsze niż moja pierwotna próba wygenerowania go za pomocą algorytmu. Jak smutno.
-19 bajtów dzięki @Leo
-25 bajtów dzięki @ L3viathan
źródło
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
170170 bajtówDzięki @Neil za zapisanie dwóch bajtów!
Wypróbuj online!
źródło
/
lub` padded to width
n + 1, why not print a space, and then a
/ `lub\
wypełnienia na szerokośćn
?/
lub\
wypełnienia na szerokośćn+1
, dlaczego nie wydrukować spacji, a następnie a/
lub\
wypełnienia na szerokośćn
?Python 3 , 96 bajtów
Wypróbuj online! Znaki niedrukowalne nie są wyświetlane poprawnie; format napisów jest taki sam jak oficjalny , ale
\x01
dla forl
i\x02
forg
.Używa podstawiania ciągów z elastycznym Pythonem 3
translate
. Lista tłumaczeń jest[s,' '*len(s),s]
odwzorowywana\x01
na' '*len(s)
i\x02
nas
. Wszelkie większe znaki pozostają niezmienione, ponieważ dają indeksy, które są poza zakresem dla listy.\x00
nie można użyć, ponieważ bajt zerowy jest odczytywany jako koniec programu, więc pierwszy wpis jest marnowany.źródło
PHP , 128 bajtów
Tylko proste wyjście
Wypróbuj online!
źródło
Skumulowane , 81 bajtów
Wypróbuj online!
Niestety niezbyt interesujące. Oto najciekawsza część:
Jest to w zasadzie interpolacja ciągów, ale o 10 bajtów krótsza niż wbudowana.
źródło
/// , 116 bajtów
Wypróbuj online!
Dane wejściowe są następujące:
Działa przy użyciu podstawowego szablonu oraz w razie potrzeby dodając spacje i znaki.
Liczba bajtów wzrosła, ponieważ Ørjan Johansen zdał sobie sprawę, że początkowo nie radził sobie z odstępami. Ale problem jest znany.
źródło
/*/\/y0\/ y\/\/y1\/ y\//**********/y///s/yx/
a potem dostajesz odstępys
./00/0|0//01/0|1//10/1|0//11/1|1//|/<\\y>//z/<y>x//<y>0/ //<y>1/ //<\\y\>///s/z/
może obsłużyć dowolną długość.Python 2 ,
101,91 bajtów113 bajtówWypróbuj online!
Dane wejściowe to ciąg zer i jedynek o długości 1 lub 2! To jest 0,01,10 lub 11!
+12 bajtów - poprawiono odstępy w \ dla długości dwóch danych wejściowych.
źródło
0 < length of input < 11
”.Węgiel drzewny , 34 bajty
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Wydrukuj lewe pary
/
s i\
s.Wydrukuj dane wyrównane do prawej w bieżącej pozycji.
Pętla przez gałęzie.
Przesuń pozycję gałęzi. Możemy to zrobić, ponieważ katalog główny został wydrukowany z wyrównaniem do prawej strony, dzięki czemu środkowa gałąź zawsze znajduje się w tej samej pozycji absolutnej.
Wydrukuj dane wejściowe.
Wydrukuj właściwą parę
/
i\
.Wydrukuj przyrostek oddziału.
Przejdź do pierwszego liścia.
Pętla przez liście.
Wydrukuj dane wejściowe oraz przyrostek gałęzi i liści.
Przejdź do następnego liścia. Uwaga: Jeśli końcowe białe znaki są dopuszczalne
F²⁺⁺⁺θι궶
, zapisuje się bajt.źródło