Wątek gliniarzy
W tym wątku Twoim zadaniem jest utworzenie programu / funkcji opartej na rekurencji w celu wygenerowania dowolnej liczby całkowitej. Rabusie spróbują znaleźć krótsze nierekurencyjne rozwiązanie w wątku Rabusiów .
Wyzwanie streszczenie
W wielu językach funkcje rekurencyjne mogą znacznie uprościć zadanie programowania. Jednak narzut składni dla prawidłowej rekurencji może ograniczyć jego użyteczność w golfowym kodzie.
Te gliny tworzy program lub funkcję biorąc jedną liczbę całkowitą n
, która generuje na pierwszej n
pozycji z roztworów o całkowitą, przy użyciu tylko rekursji 1 . Powinny również upewnić się, że istnieje krótszy nierekurencyjny sposób generowania sekwencji, aby oznaczyć ich wpis jako bezpieczny.
W rabusie spróbuje znaleźć krótszy program lub funkcję w tym samym języku, tworząc taką samą serię całkowitą, używając żadnych rekursji 2 .
Jeśli oświadczenie gliniarzy nie zostanie złamane w ciągu dziesięciu dni (240 godzin), gliniarz udowodni, że w rzeczywistości możliwe było zastosowanie krótszego nierekurencyjnego podejścia, ujawniając własne rozwiązanie. Następnie mogą oznaczyć swoje zgłoszenie jako bezpieczne .
Zwycięzca wyzwania gliniarzy będzie najkrótszy (według code-golfa) ) rekursja oparta na rekurencji oznaczona jako bezpieczna.
Zwycięzcą wyzwania rabusiów będzie rabuś, który złamał najwięcej rozwiązań.
1: Trzeba tylko rekurencyjnie składni; nie musisz się martwić, na przykład, optymalizacją ogona.
2: Ponownie, brak rekurencji w składni; więc nie możesz opublikować rozwiązania rekurencyjnego i twierdzić, że jest ono skompilowane w pętli dzięki optymalizacji wywołania ogona.
Wymagania dotyczące przedłożenia
Każde przesłanie zajmie jedną liczbę całkowitą n
(zero lub jeden). Przesłanie spowoduje następnie wygenerowanie lub zwrócenie pierwszych n
wpisów z wybranej liczby całkowitej. (zauważ, że ta seria liczb całkowitych nie może zależećn
). Metoda wejścia i wyjścia może różnić się między podejściem rekurencyjnym i nierekurencyjnym. Szereg całkowity może być dowolną serią deterministyczną o długości co najmniej 5. Szereg ten należy odpowiednio wyjaśnić.
Twoje zgłoszenie nie musi działać dla dowolnych dużych n
, ale powinno działać przynajmniej n=5
. Podejście nierekurencyjne musi być w stanie działać co najmniej tak samo n
jak podejście rekurencyjne lub do n=2^15-1
, w zależności od tego, które jest mniejsze.
Rekurencja
Ze względu na to wyzwanie rekurencję definiuje się jako tworzenie pożądanej sekwencji przy użyciu funkcji (lub konstruktu podobnego do funkcji), który wywołuje siebie (lub wywołuje sekwencję funkcji, która ostatecznie wywołuje samą siebie; obejmuje to konstrukty takie jak kombinator Y). Głębokość rekurencji powinna osiągnąć nieskończoność, podobnie jak n
nieskończoność. Podejście nierekurencyjne to wszystko, co nie jest rekurencyjne.
n
jeśli jest teoretycznie poprawny, ale nie można go uruchomić z powodu ograniczeń czasowych lub pamięciowych?
n=5
trzeba to obliczyć
xfor
jest dostępny poprzez jakiś import?), Więc może ten język nie może konkurować.
for
odbywa się za pomocą rekurencji, jestfor
rekurencyjne czy pętla?