Napisz program lub funkcję, która przyjmuje dodatnią liczbę całkowitą i wypisuje lub zwraca stos tylu żółwi sztuki ASCII , gdzie każdy żółw jest większy niż ten nad nim.
W szczególności, jeśli dane wejściowe są 1
, dane wyjściowe powinny wynosić:
__
/,,\o
Jeśli dane wejściowe to 2
:
__
o/,,\
____
/,__,\o
Jeśli dane wejściowe to 3
:
__
/,,\o
____
o/,__,\
______
/,____,\o
Jeśli dane wejściowe to 4
:
__
o/,,\
____
/,__,\o
______
o/,____,\
________
/,______,\o
Jeśli dane wejściowe to 5
:
__
/,,\o
____
o/,__,\
______
/,____,\o
________
o/,______,\
__________
/,________,\o
I tak dalej, dla większych nakładów.
Uwaga:
- Głowa
o
żółwia dolnego jest zawsze po prawej stronie. Głowy żółwi powyżej zmieniają się naprzód i wstecz. - Żadne linie nie mogą mieć spacji końcowych.
- Zbędne spacje wiodące są niedozwolone. (tj. tył dolnego żółwia powinien znajdować się na początku linii.)
- Pojedynczy opcjonalny znak nowej linii jest dozwolony.
Najkrótszy kod w bajtach wygrywa.
code-golf
string
ascii-art
kolmogorov-complexity
Hobby Calvina
źródło
źródło
,________,
Gdy ktoś mówi coś, co nie ma sensu.Odpowiedzi:
Partia, 256 bajtów
Zauważ, że linia 1 ma spację końcową, a linia 4 ma dwie spacje końcowe.
i
dlatego zawieraecho
polecenie z odpowiednią ilością wcięć dla każdego żółwia. Tymczasemu
zawiera liczbę znaków podkreślenia u przemiennych żółwi. Wiodący nieparzysty żółw ma specjalną obudowę, a następnie reszta żółwi jest wysyłana parami.źródło
C, 131 bajtów
Wypróbuj online.
Definiuje funkcję, która drukuje żółwie.
Znacznie narusza specyfikacje printf szerokości i precyzji, aby uzyskać odstępy i powtarzać podkreślenia. Każdy żółw jest drukowany za pomocą jednego
printf
połączenia:Mam też inną wersję, która ma 144 bajty z usuniętymi białymi znakami:
źródło
,_,
w kodzie.Rubinowy, 100 bajtów
Rozwiązanie rekurencyjne. Wypróbuj online!
źródło
05AB1E, 45 bajtów
Wypróbuj online
źródło
G
pętla była już w wersji z sierpnia 2016 r., Ale jeśli tak, toLv
może byćG
i obiey
mogą byćN
dla -1 bajtów.V. ,
57, 5349 bajtówPonieważ zawiera znaki niedrukowalne, oto zrzut heksowy:
Wypróbuj online!
Wyjaśnienie:
źródło
0
i poniżej.input > 10
. Na marginesie, przypadkowo złamałem go całkowicie z wejściem0 41c14
. Nie jestem pewien, czy złamałem kod, czy biegacza.-1
jako ciąg, którego nie może udawać, jest liczbą. Na szczęście nie muszę sobie z tym poradzić.Perl, 92 bajty
91 bajtów kodu +1 dla
-n
.Wymaga
-E
bez dodatkowych kosztów.Stosowanie
Dzięki @Dada za -9 bajtów za jego przeróbkę!
źródło
perl -nE 'for$i(1..$_){say$"x$_._.($v=_ x(($i-1)*2))._.$/.$"x(--$_-1).($_%2?o:$_?$":"")."/,$v,\\".($_%2?"":o)}'
. Próbowałem też dostać mniej niż 100, ale nie mogłem ...Cheddar , 105 bajtów
źródło
Retina ,
979188 bajtówLiczba bajtów zakłada kodowanie ISO 8859-1.
Wypróbuj online!
źródło
Python 2, 116 bajtów
źródło
lambda m:for i in r...
zamiastinput()
R , 150 bajtów
bardziej czysto (dodaje bajt)
Podstawowa struktura rekurencyjnie nazywa się sama - mówiąc sobie zarówno ostateczny numer, który ma zostać wywołany, jak i aktualny poziom. Zaczyna się od wartości domyślnej dla y = 1, więc potrzebuje tylko jednej zmiennej do pierwszego połączenia. Szybko definiuje dwie często używane wartości. Następnie po prostu powtarza wszystko niezbędną liczbę razy.
Każdy z nich domyślnie sprawdza, czy dodać głowę w prawo czy w lewo i odpowiednio ją umieścić.
źródło
#
przed tytułem w edytorze przecen, aby sformatować go tak jak inne odpowiedzi.TSQL, 189 bajtów
Teraz z akceptacją danych wejściowych - dzięki @PatrickRoberts
Skrzypce
źródło
i
kosztem 4 bajtówC,
328238234215 bajtów:Rekursywna implementacja wykorzystująca wiele formatowania łańcuchów i wbudowaną
memset
funkcję. Postaram się pograć w golfa z czasem, jak tylko będę mógł.C It Online! (Ideone)
źródło
17
i dalej, logika z jakiegoś powodu pęka, a zatem i żółwie. Obecnie próbuję dowiedzieć się, co jest nie tak.'c'
) kodem ASCII, aby oszczędzić po jednym znaku :)Java 1.7, 238 bajtów
Zestaw dwóch funkcji: pierwsza iteruje nad wejściem (liczba żółwi), druga ułatwia konstruowanie sekwencji powtarzalnych znaków rekurencyjnie (tj. Spacje wiodące, grzbiet i brzuch żółwi).
Nie golfowany:
Uruchom! (Ideone)
Uznałem, że można wykluczyć definicję klasy z liczby bajtów.
Mogę być w stanie zagrać w golfa nieco dalej, odwracając kolejność iteracji pętli (buduj od dolnego żółwia w górę) i / lub przechodząc w pełni rekurencyjny, jak niektóre inne odpowiedzi.
Uwaga do siebie: Java naprawdę nie ma wbudowanego skrótu do powtarzania n znaków ...
źródło
Pyton,
137120113110 bajtówNie golfowany:
Głowy były twarde.
źródło
('o','')[b]
możesz zrobić'o'*(1-b)
(i'o'*b
dla('o','')[1-b]
).'0'*-~-1
jest krótszy niż'0'*(1-b)
F #,
218207202196187 bajtów.Ogolono większość tych bajtów, wstawiając zmienne
Logika zostaje bezwstydnie skradziona z tej odpowiedzi w języku Python
Wypróbuj online.
źródło
CJam , 88 bajtów
Najpierw robi największego żółwia (bo inaczej co stałby każdy inny żółw?), A następnie stopniowo zmniejsza rozmiar, aż powstanie najmniejszy. Działa dla dowolnej liczby całkowitej większej niż 0.
Wypróbuj online!
źródło
Python 2.7,
255238236 bajtówMimo że przegrywa to z dwoma innymi rozwiązaniami Python 2, podobało mi się moje rekurencyjne podejście:
edit1: usunął kilka bajtów, eliminując niektóre zamienniki
edit2: ogolono 2 bajty, zapisując podkreślenia jako zmienne
źródło
Python 2, 147 bajtów
Wypróbuj online
źródło
Python 2.7,
139114113130 bajtówPodobało mi się również rekurencyjne podejście Iguanodon, więc oto nieco krótsza próba.
EDYTOWAĆ
Potężny
25269 bajtów grał w golfa dzięki fantastycznym wskazówkom Destructible Watermelon. Wielkie dzięki!Pomyśl, że może to być teraz najkrótsza odpowiedź w języku Python :-)źródło
i=input();t(i)
część, ponieważ możesz mieć tylko funkcję.PowerShell ,
10510097878584 bajtów-21 bajtów dzięki mazzy, wariatowi
Wypróbuj online!
Sprytnie zmienia zmienne za pomocą
$_--
aby uniknąć używania powtarzających się($_+1)
bloków w celu zapisania kilku bajtów. Konwertuje również pojedynczy argument na ciąg znaków, który jest następnie rzutowany na liczbę całkowitą, gdy jest używany w zakresie do iteracji przez liczbę żółwi. Największa sztuczka polega teraz na tym, że 2. poziom odstępów żółwia zwiększa się tylko o co drugi rząd, odejmując$_%2
(tj. 0, jeśli parzysty, 1, jeśli nieparzysty) od bieżącej liczby_wierszy.W przeciwnym razie trzeba dużo matematyki indeksu, aby się poprawnie
_
iliczy, w tym licznik opóźnień w postaci
$i++
, a teraz tylko jeden indeks listy, aby umieścić głowę po właściwej stronie.źródło
ES6 (JavaScript), 140 bajtów
Kod
Test
źródło
Płótno , 26 bajtów
Wypróbuj tutaj!
źródło