Któregoś dnia mój syn poprosił mnie, żebym zbudował mu klatkę schodową z klocków Lego. I wymyśliłem coś takiego:
Potem moje dziecko poprosiło mnie o program wykorzystujący najmniej bajtów, które wygenerowały podobne schody na ekranie komputera. Nie jestem zbyt dobry w golfie , więc potrzebuję twojej pomocy. Potrzebuję programu, który:
- Otrzymuje dodatnią liczbę całkowitą z liczbą poziomów, jakie musi mieć schody.
- Tworzy rysunek klatki schodowej z wzorem widocznym na obrazie.
Dane wyjściowe będą w formacie tekstowym, ale cegły można rozróżnić jeden od drugiego. Na przykład możesz użyć znaku „█” jako pół bloku i pomalować go na dowolny kolor lub po prostu wybrać dowolną postać.
Ograniczenia:
- Bloki muszą mieć trzy różne kolory, które będą używane tak długo, jak to możliwe (jeśli wejście to 1 lub 2, nie ma wystarczającej liczby bloków, aby użyć wszystkich trzech kolorów). Jeśli chcesz, możesz na przykład użyć znaków „░▒▓” lub po prostu wybrać trzy różne znaki.
- Żadne dwa bloki tego samego koloru lub wzoru nie mogą znajdować się obok siebie w jednym rzędzie.
Mój syn tak naprawdę nie dba o końcowe spacje lub nowe linie, dopóki narysowane są schody.
Przykłady (przepraszam za zły wybór znaków):
Input: 1
Output:
██
Input: 2
Output:
██
▓▓
Input: 3
Output:
██
▓▓
██░░
Input: 5
Output:
██
██
██░░
██░░
██░░▓▓
Odpowiedzi:
Galaretka ,
21 1916 bajtówPełny program drukujący wynik.
Używa
00
,11
i22
jak bloki.Wypróbuj online!
W jaki sposób?
źródło
Python 2 , 55 bajtów
Wypróbuj online!
Cykle między blokami
22, 44
, z wyjątkiem górnego rzędu00
. Na przykład na wejściu 10 drukujeDrukuje rzędy o coraz większej długości
i=2,3,..
, tworząc miejsce na nieparzyste długości, powtarzająci
czasy wzoru i przechodząc do długościi
. Wzór jest2244
dla wszystkich wierszy z wyjątkiem pierwszego,i=2
dla którego jest0
. Osiąga się to za pomocą wyrażenia arytmetycznego2%i*1122
.źródło
JavaScript (ES6), 80 bajtów
Pokaż fragment kodu
JavaScript (ES6), 87 bajtów
Poprzednie rozwiązanie.
źródło
SOGL ,
31282725 bajtówWyjaśnienie:
przy użyciu tej techniki
Przykład danych wyjściowych dla 9:
niekonkurujące, 22 bajty
Polecenie
m
zostało udokumentowane przy pierwszym zatwierdzeniu SOGL , po prostu nie zostało zaimplementowane.źródło
05AB1E ,
2221201817 bajtówWykorzystuje interesujący fakt, że
4^(N+2)/5 = [3,12,51,204,...] = b[11,1100,110011,11001100,...]
Wypróbuj online!
Wyjaśnienie
źródło
PHP,
6159działa bardzo podobnie do wersji Pythona, ale w miarę możliwości używa wszystkich trzech kolorów. Brak końcowej nowej linii.
źródło
aa<?for...
.Pyth , 29 bajtów
Przetestuj online!
Objaśnienia
Jestem pewien, że istnieje wiele sposobów na skrócenie tego kodu, ale teraz jestem królem zmęczenia ... Spróbuję później.
źródło
Partia, 125 bajtów
Uwaga: Zapisz to w CP437 lub CP850 lub niektórych podobnych. Działa poprzez obracanie kolorów za każdym razem. Ponieważ nie mogę odwzorować ciągu w celu wykonania obrotu, używam czterech zamienników, używając spacji jako tymczasowego etapu. To pozwala mi również na prefiks spacji w każdym wierszu, dzięki czemu dwie spacje zamieniają się w nowy blok. Przykładowe dane wyjściowe:
źródło