Wyzwanie
Zima zbliża się wielkimi krokami, a wiele miejsc otrzymuje pierwsze warstwy śniegu na sezon 15/16, więc dlaczego nie wyłamiemy maszyn śniegowych i sami nie zakodujemy?
Biorąc pod uwagę liczbę całkowitą n
za pośrednictwem STDIN, wyprowadzaj płatek śniegu reprezentacji ASCII Beta (jak opisano poniżej) na poziomie n
.
Płatek śniegu Beta
Płatek śniegu zaczyna się na poziomie 0 z jednym x:
x
Następnie w każdym rogu dodajesz jeden z tych kształtów:
x
xx
Powyższy kształt dodajesz do prawego górnego rogu. Aby uzyskać prawy dolny róg, obróć go o 90 ° zgodnie z ruchem wskazówek zegara, dla lewego dolnego rogu, 180 ° zgodnie z ruchem wskazówek zegara i dla lewego górnego rogu, 270 ° zgodnie z ruchem wskazówek zegara.
Jeśli to zrobisz, uzyskasz następujący kształt:
x x
xx xx
x
xx xx
x x
Zwróć uwagę na orientację kształtów. Kontynuując, dodajemy więcej kształtów do każdego rogu, korzystając z opisanych powyżej zasad orientacji, aby uzyskać poziom 2:
x x x
xxxxxxx
xx x x xx
xxx xxx
xx x xx
xxx xxx
xx x x xx
xxxxxxx
x x x
Zauważ, że kształty są dodawane do x
s tylko z dwiema lub więcej odsłoniętymi bokami (co jest określane jako róg powyżej).
Kształty L mogą i będą się nakładać na wartości n
większe niż 1. Na przykład:
Jeśli poziom 0 to:
x x
Następnie muszą istnieć nakładki na poziomie 1 (oznaczone jako o
, nie uwzględniaj o
w danych wyjściowych):
x o x
xxxoxxx
x x
xxxoxxx
x o x
Twoim zadaniem jest wygenerowanie reprezentacji ASCII płatka śniegu Beta.
Premia
Będzie premia 50 powtórzeń za najkrótszy program, który, gdy n
jest ujemny, wyświetla płatek śniegu (na poziomie n*-1
) jako obraz lub graficznie na ekranie.
Możesz mieć osobne programy dla nagrody i głównego zadania.
Zwycięski
Najkrótszy program w bajtach wygrywa.
2 or more exposed sides
zasadę? Zakładając, że środek jest0,0
wtedy1,1
,1,-1
,-1,-1
,-1,1
mają 2 odsłonięte strony (boki zwrócone w kierunku pozostałych 4 punkty). Czy nie powinny to być 3+ otwarte strony, aby uniknąć wypełnienia? Lub naprzemiennie rozwija się tylko wtedy, gdy ma 0 lub 1 sąsiadów (kardynał).Odpowiedzi:
CJam,
888382 bajtówSprawdź to tutaj.
Myślę, że mogę dużo zaoszczędzić dzięki temu, że wykrywam, gdzie są narożniki. Ale przynajmniej w końcu wiem, jak wyglądają kolejne iteracje:
N = 3 :
N = 4:
Patrząc na nie, wydają się one znacznie bardziej regularne niż się spodziewałem, a jakieś rozwiązanie analityczne, które generuje je bezpośrednio, może być znacznie krótsze.
źródło
Python 2, 269 bajtów
Nie umieszcza kształtów w każdym rogu, ale określa, czy postać znajduje się w płatku śniegu na podstawie współrzędnych.
Najpierw generowany jest jeden róg, a następnie odbijany w lustrze do pełnego płatka śniegu.
źródło