Twoim wyzwaniem jest dokładne wydrukowanie następującego pola:
..................................................
..................................................
.. ..
.. ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++ ++ ..
.. ++ ++ ..
.. ++ .................................. ++ ..
.. ++ .................................. ++ ..
.. ++ .. .. ++ ..
.. ++ .. .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ .. ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ .. ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. .. ++ ..
.. ++ .. .. ++ ..
.. ++ .................................. ++ ..
.. ++ .................................. ++ ..
.. ++ ++ ..
.. ++ ++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ..
.. ..
..................................................
..................................................
Skrzynia ma wysokość i szerokość 50, odstępy są dwie szerokie.
Musisz napisać funkcję lub program, który generuje lub zwraca ciąg znaków i nie przyjmuje danych wejściowych.
Wygrywa najmniej bajtów!
+
pudełko ma tylko 1 warstwę na górze i na dole? Dzięki temu odpowiedzi oparte na algorytmach będą nieco dłuższe, ponieważ oznacza to, że dwie najbardziej wewnętrzne warstwy nie są dokładnie kwadratowe.Odpowiedzi:
Pyke,
2017 bajtówWypróbuj tutaj!
Funkcja surround została stworzona takich pytań o złożoności Kołmogorowa !
źródło
jot , 25 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
echo
, nie będzie to nawet funkcja, tylko wartość. Chociaż J i tak nie ma funkcji zerowego argumentu.C, 115 bajtów
Definiuje funkcję
f
(wywołanie jakof();
), która drukuje ciąg do STDOUT.źródło
C,
535478477 bajtówTeraz to dużo golfa: - /
Oto wynik;
źródło
for(;i++<51;
a teraz jestem wszędzie o jeden: - /++i
Haskell, 72 bajty
@ Rozwiązanie Zgarba w Haskell. Próbowałem też zbudować pudełko, dodając warstwy wokół rdzenia
["..",".."]
, ale jest on o 9 bajtów dłuższy (81 bajtów).źródło
Skumulowane, niekonkurencyjne, 35 bajtów
Wypróbuj tutaj!
Nie golfowany:
Całkiem proste.
surround
jest funkcją, która otacza byt wypełnieniem. Na przykład(0) 1 surround
jest((1 1 1) (1 0 1) (1 1 1))
.$surround
jestsurround
funkcją, nie podlega ocenie.fold
przyjmuje wartość początkową, potem coś do złożenia, a następnie funkcję. W tym przypadkusurround
jestfold
ED, otaczający początkowo pusty ciąg''
(ekw.ε
) Z każdego znaku łańcucha.Najpierw tworzy się ciąg znaków
$' + .'
, który pomnożony przez liczbę powtarza każdy znak. To pozostawia nam:++ ..
. Jest to następnie rzutowane na ciąg. Następnie powtarzamy ten ciąg trzy razy, a na koniec przygotowujemy a.
, dając nam pożądany ciąg.Inne podejście do 39 bajtów:
#\
jest wstawiany i przyjmuje początkowy znak ciągu jako wartość początkową. Działa również tylko na tablicach.źródło
JavaScript (ES6), 117 bajtów
Rozwiązanie nierekurencyjne zajęło mi 128 bajtów:
Gdzie
\n
reprezentuje dosłowny znak nowej linii.źródło
C, 97 bajtów
źródło
Galaretka , 18 bajtów
Wypróbuj online!
Takie samo podejście, jak odpowiedź J Zgarba:
12ŒRA
polega na tymabs([-12 … 12])
, żex2
każdy element powtarza się dwa razy,»þ`
tworzy tabelę maksimów,ị“ + .”
cyklicznie indeksuje w łańcuch iY
łączy znak nowej linii.źródło
05AB1E ,
393533 bajtówWypróbuj online!
Wersja 33-bajtowa, która jest teraz fajniejsza, ponieważ Emigna skomentowała zapisanie 2 bajtów:
Wypróbuj online!
źródło
". + "DøJ3×'.«.pvy¤25yg-׫«})«»
dla 33 bajtów.… .+•â3fM~•3BSè.pvy¤25yg-׫«})«»
dla 34 bajtów w „chłodniejszej wersji”.MATL , 21 bajtów
Wypróbuj online!
źródło
Rubinowy, 77 bajtów
źródło
[i%26-13,i/52].map(&:abs).max%4
(zapisuje bajt)Węgiel , 25 bajtów
Wypróbuj online! Link zawiera tryb pełnych wyjaśnień
źródło
Python 3 , 89 bajtów
Wypróbuj online!
źródło
Haskell, 385 bajtów
Pierwsza runda kodu golfa tutaj ... nie mogę się doczekać, aby zobaczyć, jak inni sobie z tym poradzą.
Wynik:
źródło
where
jednym wierszu i użyj;
do rozdzielenia. 3)f:f:[]
jestf:[f] and
d: '': '': [] `isd:" "
. 4)m
przyjmuje parametr, ale go nie używa. Inlinem
it
. 5) zdefiniuj nową funkcję#
do zastąpieniareplicate
:c#x=c<$[1..8*n+x]
i wywołaj ją jakd#2
i' '#(-6)
. 6)mod 2 == 0
można zastąpićeven
lub odwrócić oraz wykorzystywaniaodd
i golfistyotherwise
:1<2
. ...b n=f:f:s:s:map(\x->l++x++r)(b$n-1)++s:s:f:[f]where f=d#2;s=l++' '#(-6)++r;l=d:d:" ";r=reverse l;d|odd n='+'|1<2='.';c#x=c<$[1..8*n+x]
.Oktawa, 53 bajty
Wygeneruj powtarzający się wzór od 1 do 8 od środka na zewnątrz i użyj go jako wskaźnika do ekstrakcji elementów
. ++ .
Wypróbuj online!
źródło
Bash, 191 bajtów
Prawdopodobnie może być mniejszy, ale był mniejszy niż moje próby algorytmiczne.
źródło
C #, 203 bajtów
Kompletny, czytelny program:
Funkcja gry w golfa :
źródło
05AB1E , 33 bajty
Wypróbuj online!
Wyjaśnienie
źródło
PowerShell ,
171151 bajtówWypróbuj online!
Ho-hum odpowiedź. Jestem pewien, że jest krótsza droga (biorąc pod uwagę długość innych odpowiedzi, jestem pewien), ale to pokazuje kilka fajnych sztuczek.
Wyjaśnienie:
1..12|%{' . +'[$_%4]}
generuje tablicę ciągów (o długości jednego znaku), we właściwym wzorze, którego potrzebujemy. Wypróbuj online!Następnie dodajemy,
|%{($a+=$_+$_)})+"$a."
który pobiera tablicę i rozwija ją na boki w oparciu o poprzedni wiersz. Wypróbuj online!Ciągi te są następnie przesyłane do pętli
|%{$c=if(++$i%2){('+','.')[($b=!$b)]}else{' '};$_.PadRight(25,$c)}
. W każdej iteracji wybieramy właściwy znak (plus, kropka lub spacja), a następnie używamy.PadRight
funkcji, aby wprowadzić odpowiednią liczbę znaków. Wypróbuj online!Teraz mamy fundament w prawym górnym rogu. Musimy odwrócić każdy ciąg
|%{,($_+-join$_[($z=25..0)])*2}
i dołączyć je razem, abyśmy mogli dostać się na górę bloku. Odbywa się to za pomocą-join
polecenia i indeksowania wstecz25..0
. Dodatkowo, enkapsulujemy łańcuchy w tablicy,(...)
i*2
robimy je podwójnie, aby uzyskać całą górę. Wypróbuj online!To wszystko jest przechowywane
$x
i zamykane w parens, więc umieszcza ciągi w rurociągu. W końcu odwracamy$x
(pamiętając, aby wyciąć duplikat-duplikat środkowego rzędu, w przeciwnym razie mielibyśmy cztery..
w środku) i pozostawić te w przygotowaniu. DomniemanyWrite-Output
wstawia nową linię między ciągami, więc otrzymujemy ją za darmo.źródło