Świat to tablica komórek pięć na pięć. Zawija się ze wszystkich stron. Można to wizualizować jak ...
XXXXX XXXXX XXOXX XXXXX XXXXX
Jesteś O. Uwielbiasz podróżować po świecie i robisz to zgodnie z następującymi zasadami (niech C będzie dniem bieżącym):
- W pierwszorzędne dni czujesz nostalgię. Wróć do miejsca, w którym zacząłeś wczoraj.
- W dziwne dni tęsknisz za domem. Przesuń jeden poziomy poziom bliżej domu, jeśli to możliwe i jeden pionowy krok bliżej domu, jeśli to możliwe. Zignoruj zawijanie świata w celu określenia bliskości.
- W parzyste dni masz ochotę na przygodę. Przesuń C / 2 kroki na południe.
- W kwadratowe dni masz ochotę na przygodę. Przejdź do wschodniej ściany.
- W dni Fibonacciego świat rozszerza się na południe o jeden rząd.
- W dni trójkątne świat rozszerza się na wschód o jedną kolumnę.
Jeśli dwie lub więcej z powyższych zasad miałoby zastosowanie jednocześnie, zastosuj je w podanej kolejności. Na przykład, w dziwny pierwszy dzień, najpierw wróć do miejsca, w którym zacząłeś wczoraj, a następnie przejdź o krok bliżej domu.
Żyjesz w centrum (początkowego) świata, tj. W pozycji (2,2), zerowo indeksowanej od północno-zachodniego rogu. Podróż rozpoczyna się tam pierwszego dnia.
Wkład
Pojedyncza liczba całkowita, N.
Wydajność
Twoja współrzędna X i Y N-tego dnia, indeksowana zerowo od rogu północno-zachodniego, oddzielona pojedynczym odstępem.
Przypadek testowy z objaśnieniem
Biorąc pod uwagę 3
, poprawny wynik to:
2 3
Możemy pracować nad tym jeden dzień na raz. Począwszy od pierwszego dnia musimy zastosować następujące ruchy:
- Dziwne, kwadratowe, Fibonacciego i trójkątne
- Prime, a nawet Fibonacci
- Prime, nieparzyste, Fibonacciego i trójkątne
W formie wizualnej:
Dzień 1 Dzień 2 Dzień 3 XXXXX XXXXXX XXXXXX XXXXXXX XXXXX XXXXXX XXXXXX XXXXXXX XXOXX -> XXXXOX -> XXXXXX -> XXXOXXX XXXXX XXXXXX XXOXXX XXXXXXX XXXXX XXXXXX XXXXXX XXXXXXX XXXXXX XXXXXX XXXXXXX XXXXXX XXXXXXX XXXXXXX
Dodatkowe przypadki testowe
Dzięki uprzejmości Martin Büttner „s roztworu odniesienia (Należy pamiętać, że należy tylko jedno wyjście koordynować, nie wszystkie z nich):
Input: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Output: 4 2 2 3 3 2 6 4 2 2 2 5 2 2 2 6 7 5 7 0 6 4 6 0 5 3 5 10 4 9 9 6 3 8 3 6 2 7 2 6 2 5 2 4 2 4
To jest kod golfowy. Najkrótsze zgłoszenie wygrywa.
Odpowiedzi:
Pyth,
157156153 bajtówMożesz to wypróbować tutaj.
To był fajny problem dla golfa! Nadal przyzwyczajam się do Pytha, ale to naprawdę świetny język.
źródło
,
- właśnie po to jest.(G%+H/N2b)
,(GH)
,(tZH)
.Haskell, 394 bajty
Można go zdecydowanie zoptymalizować, a także po szybkim sprawdzeniu poprawności
wygląda na to, że otrzymuję inne wyniki niż ten opublikowany. Wrócę i sprawdzę dokładniej mój kod, gdy będę miał więcej czasu ^^Przy okazji niezły problem!
EDYCJA: zredagowałem moje rozwiązanie, biorąc pod uwagę cenne rady udzielone przez Zgarba . Teraz działa idealnie!
EDIT2: dzięki Nimi Zrobiłem kod jeszcze mniejsze. Teraz sprawdzam również parzyste i nieparzyste w jednej funkcji zamiast dwóch, co ogólnie zmniejsza liczbę z 446 do 414 bajtów.
EDYCJA 3: poprawiona z 414 do 400 bajtów. Dzięki nimi przez kolejne 2 bajtów, jesteś w ogniu! :)
EDIT4: 4 dodatkowych bajtów przez Nimi :)
źródło
0<1
jest krótszy niżotherwise
i0/=mod x y
można go skrócić0<mod x y
. Również1==mod(d)2
jestodd d
i0==mod(d)2
jesteven d
.0<1
zamiastotherwise
pracy?t
), ponieważelem d[1..div(d*d-d)2]
jest prawdziwa dla wszystkichd > 2
.otherwise
to po prostu inna nazwa dlaTrue
.C,
425396 bajtówIstnieją pewne elementy, które można ulepszyć, ale działa to w przypadkach testowych .
Wyjaśnienie
źródło
Perl 5, 284 bajtów
283 bajty plus 1 dla
-E
flagi zamiast-e
Ten sam kod, ale z większą ilością białych znaków, więcej nawiasów i dłuższymi nazwami zmiennych:
Jestem przekonany, że można to jeszcze pograć w golfa.
źródło
JavaScript,
361359 bajtówKod używa przypisania Destrukturyzacja . Obecnie jest obsługiwany tylko w Firefoksie i Safari.
Wyjaśnienie
źródło