Wyzwanie
Utwórz funkcję lub program, który po otrzymaniu liczby całkowitej size
wykonuje następujące czynności:
Jeśli size
jest równe 1, wyjście
H H
HHH
H H
Jeśli size
jest większy niż 1, wyjście
X X
XXX
X X
gdzie X
jest wyjściem programu / funkcji dlasize - 1
(Jeśli wolisz, możesz dopasować przypadek podstawowy 0
, o ile podasz w odpowiedzi)
Dowolny z poniższych formatów wyjściowych jest akceptowalny, w zależności od tego, który jest dla Ciebie wygodniejszy:
Ciąg wymaganej struktury z dowolnymi dwoma odrębnymi znakami odpowiadającymi
H
ispace
Dwuwymiarowa tablica o wymaganej strukturze, z dowolnymi dwoma odrębnymi wartościami odpowiadającymi
H
ispace
Tablica / lista ciągów, z jednym wierszem wyniku w każdym ciągu, z dowolnymi dwoma odrębnymi wartościami odpowiadającymi
H
ispace
Dopuszczalne spacje są dozwolone, o ile na każdej linii znajduje się stała ilość spacji wiodących. Dwa różne znaki wyjściowe mogą być zależne od wszystkiego, co wybierzesz, o ile są one różne.
Określ format wyjściowy, który zwraca kod.
Przypadki testowe
1
H H
HHH
H H
2
H H H H
HHH HHH
H H H H
H HH HH H
HHHHHHHHH
H HH HH H
H H H H
HHH HHH
H H H H
3
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
H HH HH H H HH HH H
HHHHHHHHH HHHHHHHHH
H HH HH H H HH HH H
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
H H H HH H H HH H H H
HHH HHHHHH HHHHHH HHH
H H H HH H H HH H H H
H HH HH HH HH HH HH HH HH H
HHHHHHHHHHHHHHHHHHHHHHHHHHH
H HH HH HH HH HH HH HH HH H
H H H HH H H HH H H H
HHH HHHHHH HHHHHH HHH
H H H HH H H HH H H H
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
H HH HH H H HH HH H
HHHHHHHHH HHHHHHHHH
H HH HH H H HH HH H
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
To jest golf golfowy , więc wygrywa najniższa liczba bajtów dla każdego języka!
źródło
Odpowiedzi:
Wolfram Language (Mathematica) , 46 bajtów
Zwraca tablicę 2d
0
s i1
s.Wypróbuj online!
źródło
Nest
(wielokrotnie) tę funkcję wiele razy. Jak każde inne zgłoszenie (Galaretka?)ArrayFlatten
Jest… cóż, wbudowane, ale zachowuje się trochę tak jakFlatten[#,{{1,3},{2,4}}]
w tym przypadku. (nie testowałem)Płótno ,
1412 bajtówWypróbuj tutaj!
Wyjaśnienie:Gdzie
I
jest wejście,X
jest wzorcem wygenerowanym przez poprzednią pętlę („H” dla pierwszej pętli) i<space>
jest pustą przestrzenią w pierwszym i trzecim rzędzie wzorca, dodaną domyślnie przez+
.-2 bajty dzięki dzaima !
źródło
MATL ,
1211 bajtówBiorąc pod uwagę dane wejściowe
n
, tworzy to macierz zawierającą0
in
.Wypróbuj online!
Aby przekonwertować to na macierz znaków
H
i spację, dodajg72*c
nagłówek. Wypróbuj też online!Lub dodaj,
]1YC
aby zobaczyć matrycę wyświetlaną graficznie. Wypróbuj w MATL Online!Wyjaśnienie
źródło
Stax ,
1615 bajtówUruchom i debuguj
Jest to ascii reprezentacja programu z komentarzami. Ten program buduje literę H na boki, a następnie transponuje raz na końcu.
Dodatkowy 14-bajtowy program - wykorzystuje jego dane wejściowe jako znak wyjściowy. Teoretycznie nie dałoby to prawidłowego kształtu przy 10, ponieważ ma 2 cyfry, ale próba uruchomienia powoduje awarię mojej przeglądarki.
źródło
Rubinowy , 72 bajty
Dane wyjściowe to lista ciągów, jeden ciąg w wierszu.
Wypróbuj online!
źródło
Haskell , 50 bajtów
Wypróbuj online!
Tworzy siatkę zer i jedynek. Jedna postać dłużej na spacje i litery H.
Haskell , 51 bajtów
Wypróbuj online!
źródło
Galaretka ,
171615 bajtówJest to pełny program, który wypisuje tablicę 2D 1 i 0 .
Wypróbuj online! lub zobacz wynik z literami H i spacjami.
źródło
APL (Dyalog Classic) , 14 bajtów
Wypróbuj online!
⎕
oceniane wejście n,⍳⎕⍴3
wszystkie n-krotki z elementami od 0 1 22|
mod 2×/¨∘.≥⍨
utwórz macierz, porównując każdą parę krotek a i b - jeśli wszystkie elementy a są ≥ odpowiadającymi elementami b, jest to 1, w przeciwnym razie 0źródło
SOGL V0.12 , 13 bajtów
Wypróbuj tutaj!
źródło
R , 64 bajty
Wypróbuj online!
Redukuje produkt Kronecker, jako bezwstydny port odpowiedzi Luisa Mendo .
Stopka drukuje wynik ładnie, ale jest to anonimowa funkcja, która zwraca
matrix
z1
zaH
i0
dla przestrzeni.źródło
Java (OpenJDK 9) , 135 bajtów
Wypróbuj online!
Zwraca
int[][]
z0
zaH
i1
zaspace
. To faktycznie „rzeźbi” ścianęH
zamiast „palowania”H
.Objaśnienia
źródło
V , 22 bajtów
Wypróbuj online!
Hexdump:
Jest to w zasadzie dokładnie to samo podejście, co dywan Sierpińskiego i The Fractal Plus na Anarchy Golf.
źródło
Python 2 , 70 bajtów
Wypróbuj online!
Funkcja wyświetla listę ciągów znaków.
Python 2 , 84 bajtów
Wypróbuj online!
Używa tego samego szablonu, co inne wzory fraktalne 3 * 3:
źródło
J ,
2522 bajtówWypróbuj online!
źródło
Haskell,
73676455 bajtówDziała to tylko z najnowszą wersją
Prelude
, ponieważ eksportuje<>
zData.Semigroup
. Aby uruchomić go na TIO, dodaj import, tak jak tutaj: Wypróbuj online!Edycja: -9 bajtów dzięki @ Potato44.
źródło
(#)
w golfa ,g#f=g<>f<>g
jeśli używasz GHC 8.4. To dlatego, żeSemigroup
jest teraz w preludium.Perl 5 ,
4644434140 bajtów1 liczenie. Wykorzystuje
0
i1
dlaH
i przestrzeń, ma wiodącą1
(przestrzeń)Oparty na klasycznym pomyśle mtve.
Wypróbuj online!
źródło
\321
jest to konieczne, każda postać wydaje się działać.//
i$'
może również zastąpić//g
i$`
, ale nie jestem pewien, czy prowadzi to do poprawy.\321
znajdowało się uzupełnienie bitowe.
(używane do generowania kolejnego wzorca fraktalnego). Ale porzuciłem bit-dopełniacz, więc oczywiście już go nie potrzebuję. Użyłem//g
i $ `, dzięki czemu mogę łatwo przetestować kod z wiersza poleceń (//
i$'
nie prowadzę do wzmocnienia, które widzę, uzyskany bajt jest marnowany spacją lub!
ponownie)Vim -
665654 bajtówA @ c H esc " r d ^ q c { ctrl-v } " a y g v r space g v d " a P P " a P V G " b y P g v ctrl-v $ d " a P . . G " b p q @ r
Dane wejściowe są traktowane jako liczba w buforze.
źródło
:set nowrap
aby zobaczyć wynik, dla 4 i więcej.APL (Dyalog Unicode) ,
3834 bajtów SBCSDane wyjściowe to tablica dwuwymiarowa z
1
reprezentacją H i0
przestrzenią.Wypróbuj online!
źródło
f←
i znaki liczyć jako 1 bajt każdego: codegolf.meta.stackexchange.com/questions/9428/... Jest również uznane za legalne wziąć sygnał z⎕
, czyli zastąpić⍣⍵
z⍣⎕
i upuść szelki zewnętrznej DFN jest.1 1⍴1
można zapisać jako,⍪1
a wtedy pareny wokół operatora stają się niepotrzebne. Jeśli znasz pociągi - tutaj mogą bardzo pomóc.⍨
jest twoim przyjacielem:(⍵,(0×⍵),⍵)
=>(⍵,⍵,⍨0×⍵)
Węgiel drzewny ,
3029 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Wydrukuj oryginał
H
.Pętla nad pierwszymi
size
potęgami 3.Przesuń kursor z powrotem do początku.
Trim
potrzebuje tego, ponieważ zarówno oryginalny wydruk, jakH
i odbicie poniżej poruszają kursorem.Skopiuj poprzednią iterację w dół, tworząc domino.
Skopiuj wynik w dół i w prawo, tworząc tetromino.
Przytnij płótno do
L
kształtu triomino.Odbij płótno poziomo i pionowo z zakładką, wykonując iterację.
Węgiel drzewny jest lepszy w niektórych fraktalach niż w innych. Oto podobny pomysł, ale w prawie połowie wielkości:
Wypróbuj online! Link jest do pełnej wersji kodu.
źródło
Python 2 , 143 bajty
Wypróbuj online!
-30 bajtów dzięki rekursywnemu
kod opakowania służy do dobrego formatowania. działa dobrze, jeśli go usuniesz
źródło
PHP 7,
125109 bajtówinne podejście: Zamiast rekurencyjnie zagnieżdżać i spłaszczać wynik, po prostu pętle przechodzą przez wiersze i kolumny i wykorzystują trzecią pętlę, aby dowiedzieć się, czy wydrukować,
H
czy_
.Edycja: Dużo zaoszczędziłem, łącząc pętle wierszy / kolumn w jedną, choć zajęło trochę czasu, aby uzyskać prawidłowe zmniejszenie wewnętrznej pętli. Wymaga PHP 7 dla operatora mocy.
Wypróbuj je online !
wypisuje wynik. Uruchom jako potok z
-nR
.funkcja kwalifikowana,
147130 bajtówzwraca pojedynczy ciąg. Uruchom z domyślną konfiguracją (nie
php.ini
).źródło
%3==1
można zastąpić%3&1
.Galaretka , 25 bajtów
Wypróbuj online!
Chociaż jest to dłuższe niż dotychczasowe zgłoszenie galaretki , próbuje wygenerować każdą postać niezależnie tylko od współrzędnej.
W szczególności, jeżeli jest współrzędna
, odpowiednio.
(x,y)
(1 indeksowania), pierwszy powraca łącza0
i1
odpowiadaH
iPonadto 5 bajtów
ị⁾ HY
służy do formatowania, więc ten program (20 bajtów) jest również poprawny (ale dane wyjściowe nie wyglądają tak ładnie):źródło
T-SQL ,
267261 bajtówźródło
PHP 7, 153 bajty
Uruchom z domyślną konfiguracją (nie
php.ini
) lub spróbuj online .źródło
Perl, 64 bajty
Wymaga
-p
, dane wejściowe są pobierane ze standardowego wejścia. Dane wyjściowe to HH
s.Wypróbuj online!
źródło
-p
już liczyć (myślę, że jest to zbyt łagodne dla Perla, ale tak już jest)PHP (5.6+), 94 bajty
Używany z
-F
opcją wiersza poleceń. Zakłada domyślne wartości interpretera (-n
). Nie działa w wersjach wcześniejszych niż 5.6, ze względu na operatora mocy.Przykładowe użycie
Wypróbuj online!
źródło
$s.$s.$s
zamiast$s.=$s.$s
. I nie potrzebujesz<?
z-R
zamiast-F
.-R
, czy możesz mi pokazać pełne wykorzystanie?-nF
:echo <input> | php -nR '<code>'
.-r
jest prawie taka sama:php -nr '<code>' <arguments>
.preg_filter
polega na iteracji każdej linii z zachowaniem nowej linii, mniej więcej równoważnejjoin("\n",array_map(function(){...},split("\n",$s.$s.$s)))
, ale znacznie mniej szczegółowej. Początkowostr_pad
zmieniłem na,sprintf
ponieważ jest o jeden bajt krótszy:'"\0".str_pad($$i++/$i&1?"\0":"",$i)."\0"'
CJam -
103978776 bajtówTen program wykonuje dość pełną rekursję „ręcznie”. Brak inteligentnego mnożenia macierzy. W trakcie rekurencji na szczycie stosu znajduje się tablica gromadząca dane wyjściowe uzyskane z wywołań nadrzędnych. Zaraz po każdym zestawie wywołań rekurencyjnych dane wyjściowe wywołań rekurencyjnych muszą zostać spakowane razem, aby upewnić się, że dane wyjściowe są prawidłowe, gdy stos jest drukowany liniowo na końcu programu. Stos argumentów przekazywanych w rekursji jest przechowywany w zmiennej
A
.Wypróbuj online
źródło
K (ngn / k) , 18 bajtów
Wypróbuj online!
źródło
Japt , 23 bajty
Wypróbuj online!
Rozpakowane i jak to działa
Korzystanie z transponowanego wzoru
jest znacznie łatwiejszy w obsłudze niż oryginalny
H
wzór, przynajmniej w Japt, gdzieI
można to zrobić za pomocą powtórzenia struny i środkowego wypełnienia.źródło
C ++ 11–138 bajtów
Nie jestem jednak pewien, czy ta odpowiedź ma poprawną składnię tutaj.
Niegolfowany z działającym kodem
źródło