Wprowadzenie
W geometrii krzywa Peano jest pierwszym przykładem wykrytej przez Giuseppe Peano w 1890 r. Krzywej wypełniania przestrzeni. Krzywa Peano jest funkcją ciągłą od zera do przedziału jednostek, ale nie jest iniekcyjna. Peano był motywowany wcześniejszym wynikiem Georga Cantora, że te dwa zestawy mają tę samą liczność. Z powodu tego przykładu niektórzy autorzy używają wyrażenia „Krzywa Peano”, aby bardziej ogólnie odwoływać się do dowolnej krzywej wypełniającej przestrzeń.
Wyzwanie
Program pobiera dane wejściowe, które są liczbami całkowitymi n
, i wysyła rysunek przedstawiający n
iterację krzywej Peano, zaczynając od boków 2 pokazanych w skrajnej lewej części tego obrazu:
Wejście
Liczba całkowita n
podająca numer iteracji krzywej Peano. Opcjonalne, dodatkowe dane wejściowe opisano w sekcji bonusów.
Wynik
Rysunek n
iteracji krzywej Peano. Rysunek może być zarówno grafiką ASCII, jak i „prawdziwym” rysunkiem, w zależności od tego, który jest najłatwiejszy lub najkrótszy.
Zasady
- Dane wejściowe i wyjściowe można podawać w dowolnym dogodnym formacie (wybierz najbardziej odpowiedni format dla swojego języka / rozwiązania).
- Nie trzeba obsługiwać wartości ujemnych ani nieprawidłowych danych wejściowych
- Dopuszczalny jest pełny program lub funkcja.
- Jeśli to możliwe, dołącz link do internetowego środowiska testowego, aby inni mogli wypróbować Twój kod!
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
Bonusy
Ponieważ nie powinien to być spacer po parku (przynajmniej w większości języków, o których myślę), punkty premiowe są przyznawane za:
- -100 bajtów, jeśli twój kod generuje gif z budowy krzywych Peano do
n
. - -100 bajtów, jeśli kod rysuje krzywą wypełniającą spację dla dowolnego kształtu prostokątnego (krzywa Peano działa oczywiście tylko dla kwadratów). Możesz założyć, że dane wejściowe przyjmują formę, w
n l w
którejn
ma takie samo znaczenie jak poprzednio (liczba iteracji), ale gdziel
iw
stają się długością i szerokością prostokąta, w którym narysowana jest krzywa. Jeślil == w
staje się to zwykłą krzywą Peano.
Negatywne wyniki są dozwolone (ale czy są możliwe ...).
Edytować
Proszę dołączyć wyniki swojego programu do rozwiązania dla n == 3 (l == w == 1)
.
n
się posłużył, jeślil
iw
są również dane wejściowe ??????????? I czy krzywa Peano byłaby szczególnym przypadkiem - nie jest to jedyna krzywa wypełniania przestrzennego, więc niektóre algorytmy mogą wymagać specjalnej specjalizacjiOdpowiedzi:
Mathematica, wynik 60-100 - 100 = -140
Czysta funkcja. Pobiera
n
i{l, w}
(szerokość i wysokość) jako dane wejściowe i daje animowaną grafikę jako dane wyjściowe. Najpierw tworzy krzywą Peano n- tego rzęduPeanoCurve
. Ponieważ przypadek l = w nadal musi tworzyć krzywą Peano, zmieniamy wyrażenie na poziomie 3, podobnie jak odpowiedź Davida ; dla l ≠ w po prostuScale
krzywą prostokąta. Ta krzywa nadal będzie wypełniać przestrzeń, spełniając drugą premię. Aby uzyskać pierwszy bonus, po prostuAnimate
we wszystkich rozmiarach. Zauważ, że OP zasugerował, że było to wystarczająco różne od Davida C, aby uzasadnić własną odpowiedź. Wynik dla n = 3, l = w = 1 wygląda następująco:źródło
GFA Basic 3.51 (Atari ST),
156134124 bajtówRęcznie edytowany wpis w formacie .LST. Wszystkie linie kończą się
CR
, w tym ostatnia.Rozszerzony i skomentowany
Przykładowe dane wyjściowe
źródło
Perl 6 , 117 bajtów
Wypróbuj online!
0-indeksowane. Zwraca tablicę 2D znaków Unicode. Podstawową ideą jest to, że w przypadku niższych rzędów wyrażenie
daje wzór
W górnych wierszach wyrażenie to
Wyjaśnienie
źródło
K (ngn / k) ,
372726 bajtówWypróbuj online!
zwraca macierz boolowską
|'y
jest składnią specyficzną dla ngn / k. inne dialekty wymagają,:
aby każdy czasownik był monadyczny:|:'y
źródło
1
Wolfram Language
8336 bajtów (ewentualnie -48 bajtów z bonusem)Od wersji 11.1
PeanoCurve
jest wbudowany.Moje oryginalne, niezdarne przesłanie zmarnowało wiele bajtów na
GeometricTransformation
iReflectionTransform.
Ta znacznie zredukowana wersja została zasugerowana przez alephalpha .
Reverse
było wymagane do prawidłowego ustawienia wyjścia.Przykład 36 bajtów
Premia
Jeśli kwalifikuje się to do premii 100 pkt, waży 52 - 100 = -48 Kod
[5]
nie został zliczony, tylko czysta funkcja.źródło
Graphics[Reverse/@#&/@PeanoCurve@#]&
BBC BASIC, 142 znaki ASCII (130 bajtów tokeny)
Pobierz tłumacza na http://www.bbcbasic.co.uk/bbcwin/download.html
źródło
HTML + SVG + JS,
224213 bajtówDane wyjściowe są odbijane w poziomie.
Wypróbuj online! (drukuje HTML)
Pokaż fragment kodu
źródło
Logo, 89 bajtów
Port odpowiedzi Atari BASIC @ Arnauld. Do użytku, coś takiego zrobić to :
źródło
Stax , 19 bajtów
Uruchom i debuguj
Wyjście dla 3:
źródło