Zadanie
W tym wyzwaniu Twoim zadaniem jest narysowanie reprezentacji artystycznej ASCII kilku stosów pudeł o rosnącej wysokości. Jako dane wejściowe podano liczbę stosów, która jest dodatnią liczbą całkowitą. Pierwszy stos zawiera jedno pudełko wielkości 2x2
. Drugi stos zawiera 2 pudełka wielkości 3x3
. Ogólnie rzecz biorąc, k
th stos zawiera k
pudełka wielkości (k+1)x(k+1)
.
Granice każdego pola są rysowane za pomocą znaków -|+
, a ich wnętrze składa się z białych znaków. Sąsiednie pola dzielą swoje granice, a rogi należy zawsze narysować +
, nawet jeśli są częścią granicy innego pola.
Przykłady
Dane wyjściowe dla 1
:
++
++
Dane wyjściowe dla 2
:
+-+
| |
+-+
++ |
++-+
Dane wyjściowe dla 3
:
+--+
| |
| |
+--+
| |
+-+ |
| +--+
+-+ |
++ | |
++-+--+
Dane wyjściowe dla 5
:
+----+
| |
| |
| |
| |
+----+
| |
| |
| |
+---+ |
| +----+
| | |
| | |
+---+ |
| | |
| +----+
+--+ | |
| +---+ |
| | | |
+--+ | |
| | +----+
+-+ +---+ |
| +--+ | |
+-+ | | |
++ | | | |
++-+--+---+----+
Zasady i punktacja
Dane wejściowe można odbierać z STDIN, jako argument wiersza poleceń lub jako argument funkcji. Dane wyjściowe muszą przejść do STDOUT lub najbliższego odpowiednika. Dozwolona jest dowolna skończona ilość białych znaków, podobnie jak poprzedzające i końcowe znaki nowej linii, ale nie może być żadnych dodatkowych poprzedzających spacji.
To jest golf golfowy, więc wygrywa najmniejsza liczba bajtów. Standardowe luki są niedozwolone.
n
in-1
są stosunkowo pierwsze. Dwie plusy nigdy się nie pokrywają.Integer.MaxValue
jako dane wejściowe.Integer.MaxValue
ani nie jest równoważna.Odpowiedzi:
CJam,
64 6058 bajtówKonstruowanie każdej kolumny na raz.
Wypróbuj online tutaj
źródło
Java (
407349 znaków)Kilka znaków dzięki @Zgarb i @Geobits
Kod
Nie jestem pewien, czy jest to optymalne, ale to moja pierwsza próba, prawdopodobnie spróbuję później umieścić go w lepszym języku golfowym. Wszelkie sugestie są mile widziane!
Rozszerzony
Sprawdź to tutaj.
źródło
&&
i za||
pomocą&
oraz|
. 2) Przenieśint
deklaracje dofor
(for(int i=0,j,x,z;...
). 3) Na końcu swojej funkcji gry w golfa masz jeden zbyt wiele aparatów ortodontycznych.a+1<=b+1
; można je zastąpića<=b
.q*q+1
prawdopodobnie powinien być po prostu przypisany do innej zmiennej. Używasz go około 9 razy i możesz zaoszczędzić sporo, mówiąca=q*q+1
raz. Równieżq*(q+1)
jest po prostuq*q+q
.Python 2,
144128 bajtówNieco kręcone. Wszędzie kręciło się trochę.
źródło
Python, 188 bajtów
Oblicza matematycznie znak na każdej
x,y
pozycji. Trudno było zrobić+
nadruk po obu stronach każdego pudełka, a także zatrzymać skrajnie prawą stronę+
tego, co byłobyn+1
pudełkami.źródło
long
który nie ma górnego limitu.C # - 304 bajty (funkcja)
lub 363 bajtów (pełny kod)
Starałem się unikać stwierdzeń if. Nie golfowany:
źródło
long
zamiast tego użyć .Rubinowy (205 bajtów)
Pobiera liczbę jako argumenty wiersza poleceń. Zaczyna się od nowej linii wiodącej, ale jest to dozwolone.
źródło
JavaScript (ES6), 293 bajty
Uruchomiłem to w przeglądarce Firefox. Zignoruj
"
dodawanie konsoli między ciągami. To głównie rzeczy z ES5, ale postaram się bardziej zagrać w golfa.Ungolfed / ES5
źródło
Python 2,
294290Mam to działa, ale nadal muszę grać w golfa więcej. Cieszę się jednak, że to było trudne (przynajmniej dla mnie)!
Prawdopodobnie dodam wyjaśnienie później, chyba że będzie to od razu jasne dla kogoś ...? Wątpię w to.
Wypróbuj tutaj
źródło
Python - 243 bajty
Generuje wszystkie kolumny, zastępując nakładanie się kolumn z wyjątkiem pierwszej. Następnie wypełnia go spacjami, transponuje i drukuje.
Zastanawiam się nad tłumaczeniem na Pyth, ale będę potrzebował zamiennika dla funkcji pad.
źródło