Celem tego wyzwania jest graficzne przedstawienie chodzenia po płaszczyźnie, gdzie kierunek każdego kroku jest określony przez pierwotność i parzystość jego binarnej ekspansji. Konkretnie,
- Początkowy kierunek jest ustalony, powiedzmy na północ.
- Wszystkie kroki mają tę samą długość .
- Kierunek z etapu może być Północna, Zachodnia, Południowa i Wschodnia, a określa się następująco:
- Jeśli nie jest liczbą pierwszą, kierunek się nie zmienia.
- Jeśli jest liczbą pierwszą, a binarne rozszerzenie ma parzystą liczbę, skręć w prawo.
- Jeśli jest liczbą pierwszą, a binarne rozszerzenie ma nieparzystą liczbę, skręć w lewo.
Jako działający przykład , załóżmy, że początkowy kierunek to Północ. Pierwsze kroki to:
- nie jest liczbą pierwszą. Przesuwamy się więc o jeden krok w obecnym kierunku, czyli na północ.
- jest liczbą pierwszą, a jej rozwinięcie binarne
10
ma liczbę nieparzystą. Skręcamy więc w lewo i jesteśmy teraz zwróceni na Zachód. Przesuwamy się o jeden krok w tym kierunku. - jest liczbą pierwszą, a jej binarne rozszerzenie
11
ma, a nawet liczbę. Skręcamy więc w prawo i jesteśmy teraz skierowani na północ. Przesuwamy się o jeden krok w tym kierunku. - nie jest liczbą pierwszą. Przesuwamy się więc o jeden krok w obecnym kierunku, czyli na północ.
Wyzwanie
Wejście : dodatnia .
Wyjście : wykres przejścia krokowego, jak zdefiniowano powyżej.
Dodatkowe zasady
- Początkowy kierunek może być dowolnie wybrana (niekoniecznie Północna), lecz powinna być taka sama dla wszystkich .
- Reguła toczenia może być odwrotny do opisanego powyżej, to znaczy, skręcić w prawo na nieparzystości i pozostawiona na jeszcze; ale to musi być taka sama dla wszystkich .
- Wyjściem musi być graficzne przedstawienie marszu. Na przykład:
- Spacer można narysować za pomocą segmentów linii.
- Odwiedzone punkty mogą być oznaczone markerem, takim jak kropka; z segmentami linii łączącej lub bez.
- Można dostarczyć dwukolorowy obraz rastrowy, z jednym kolorem odpowiadającym odwiedzanym punktom, a drugim dla osób nieodwiedzanych.
- Skale osi poziomej i pionowej nie muszą być takie same. Również etykiety osi i podobne elementy są opcjonalne. Tak długo, jak spacer można wyraźnie zobaczyć, fabuła jest ważna.
- Pamiętaj, że niektóre punkty są odwiedzane więcej niż raz. Fabuła nie jest na to wrażliwa. Na przykład, jeśli na wykresie są pokazane segmenty linii, każdy segment jednostki jest wyświetlany tak samo bez względu na to, ile razy został przemierzony.
- Kod powinien działać dla dowolnych
N
nieograniczonych zasobów. Dopuszczalne jest, jeśli w praktyce zawodzi przez długiN
czas z powodu ograniczeń czasowych, pamięciowych lub typu danych. - Wejścia i wyjścia są elastyczne jak zwykle. W szczególności można zastosować dowolny ze standardowych sposobów przesyłania obrazów.
- Najkrótszy kod w bajtach wygrywa.
Przypadki testowe
Poniższe wykresy wykorzystują północ jako kierunek początkowy; nawet parzystość skręca w prawo; i spacer jest przedstawiony za pomocą segmentów linii.
N = 7
:
N = 3000
:
N = 20000
:
N = 159000
:
N = 1200000
:
N = 11000000
:
[graphical-output]
dozwolony jest tylko powód ? Czy jest jakikolwiek powód, aby odrzucić niedozwolone dane wyjściowe ASCII, takie jak moja teraz usunięta odpowiedź na węgiel drzewny?