Cel
Celem programu jest narysowanie wielokrotnie powiększonego prostokąta artystycznego ASCII, naprzemiennie poziomo i pionowo. Za każdym razem, gdy prostokąt podwaja się, dodatkowy obszar jest reprezentowany przez inną postać, a poprzednie obszary pozostają niezmienione. Dwie najmniejsze sekcje zawierają po jednym znaku i mogą znajdować się w dowolnym rogu.
Program przyjmuje jako liczbę wejściową jedną liczbę całkowitą, określając liczbę sekcji, które zawiera pełny prostokąt.
Żadne inne zasoby zewnętrzne lub dane wejściowe są niedozwolone.
Przykładowe wejście i wyjście
10
ABDDFFFFHHHHHHHHJJJJJJJJJJJJJJJJ
CCDDFFFFHHHHHHHHJJJJJJJJJJJJJJJJ
EEEEFFFFHHHHHHHHJJJJJJJJJJJJJJJJ
EEEEFFFFHHHHHHHHJJJJJJJJJJJJJJJJ
GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ
GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ
GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ
GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
Kryteria wyboru
Najkrótszy kod w tygodniu wygrywa punkty.
Odpowiedzi:
APL, 25 znaków / bajtów *
Widok rozstrzelony
Przykłady
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: APL może być zapisany we własnym (starszym) jednobajtowym zestawie znaków, który odwzorowuje symbole APL na górne 128 bajtów. Dlatego do celów oceniania program N znaków, który używa tylko znaków ASCII i symboli APL, można uznać za N-bajtowy.
źródło
GolfScript, 30 znaków
Przykład (uruchom online ):
źródło
Python 2.7 - 85
103Wykorzystuje
zip(*s)
składnię do ciągłej transpozycji listy. Ogromne podziękowania dla Daniela za jego wskazówkę, która ogoliła 12 znaków! Następnie ogoliłem jeszcze kilka, używając cyfr zamiast liter.Ponadto wykorzystuje to
1<<x
raczej niż2**x
przesunięcie bitowe ma niższy (?) Priorytet. Przestrzegać:I trochę wyników:
źródło
for i in s:print''.join(i)
.Ruby, 88
Odczytuje N ze standardowego wejścia.
Przykład użycia dla N = 8:
Wynik:
N = 10
Wynik:
źródło
J,
5743Przykłady:
źródło
MATLAB, 86 znaków
Moja najkrótsza próba w MATLAB, pimped @flawr (dwa razy!):
Przykładowe dane wyjściowe:
źródło
function M=f(n) M=''; if n M=cat(mod(n,2)+1,f(n-1),64+n*ones(2.^fix([n-1,n-2]/2))); end
fix
zfix(n/2-[.5,1])
PS: Naprawdę ładne rozwiązanie zcat
, nie wiedział o takim zastosowaniu, gdzie można wybrać wymiar =)q [73 znaków]
przykład
źródło
Sclipting , 59 znaków
(Ten program mógłby być nieco krótszy, gdybym miał instrukcje dotyczące logarytmu base-2, ale nie mam, więc robię to ręcznie za pomocą pętli.)
Kod z adnotacjami
n
jest wejściem.Wynik
Dla
n
= 6:Oczywiście możesz zmienić
뀀
(@
) na dowolny inny znak podstawowy, np. Za pomocą글
(spacja) in
= 7:Najwyższą liczbą, która nie powoduje, że program jest dłuższy, jest
믰
(= 255), co daje nam (n
= 8 tym razem):Jeśli wydłużymy program o 1 znak, np. Użyj
냟및
(=\u4DFF
) in
= 9, otrzymamy:źródło
C #,
239185182180 bajtówC # nie ma nic w mniej szczegółowych językach.
Wyjście, znaki wybrane do ładności:
źródło
for
pętli, tworząc 182.PERL, 122 znaki
z dodaną białą spacją:
Wynik:
źródło
PERL,
9481 znakówKonstruuje fraktal iteracyjnie litera po literze, dodając nowe wiersze i kolumny oraz wiersze i kolumny ... Wykorzystuje do tego proste operacje na łańcuchach. Zauważ, że nadużywam zmiennej standardowej zamiast litery pierwszej, aby pozwolić na cukier składniowy (np. Pomijając spacje -
$:x2
itp.)Z dodaną białą spacją i komentarzami:
Niektóre dane wyjściowe:
źródło
Sclipting , 45 znaków
To rozwiązanie działa zupełnie inaczej niż inne rozwiązanie Sclipting. Jest o wiele bardziej nudna, ale krótsza ...
Adnotacja
źródło
Delfy 348 || 449 z tiret
Bez wcięcia
Z wcięciem
źródło
CJam, 30 (23) bajtów
CJam jest kilka miesięcy młodszy od tego wyzwania, więc nie kwalifikuje się do zielonego znacznika wyboru.
Sprawdź to tutaj.
OP wyjaśnił w komentarzu, że dowolny zestaw unikalnych znaków do wydruku jest dozwolony, więc od samego początku biorę drukowane znaki ASCII (ze spacją w rogu,
!
obok itd.).Jeśli orientacja może się zmieniać pomiędzy parzystymi i nieparzystymi danymi wejściowymi (co nie wydaje mi się, ale tak właśnie robi przesłanie GolfScript), mogę to zrobić w 25 bajtach:
Pomysł jest bardzo prosty: zacznij od siatki zawierającej spację, a następnie N-1 razy transponuj ją i podwaj wszystkie linie następnym znakiem.
W przypadku wersji długiej na końcu również ponownie dokonuję transpozycji N-1 razy, aby zagwarantować spójną orientację.
źródło