Нить ментов
В этой теме ваша задача - создать рекурсивную программу / функцию для генерации любых целочисленных рядов. Грабители попытаются найти более короткое нерекурсивное решение в теме Грабителей .
Краткий обзор задачи
Во многих языках рекурсивные функции могут значительно упростить задачу программирования. Тем не менее, синтаксические издержки для правильной рекурсии могут ограничивать ее применимость в коде-гольфе.
В копы будут создавать программу или функцию , принимая одно целое число n
, которое будет генерировать первые n
записи целочисленного ряда, используя только рекурсии 1 . Они также должны убедиться, что существует более короткий нерекурсивный способ генерации последовательности, чтобы пометить их запись как безопасную.
В разбойниках будут пытаться найти более короткую программу или функцию на том же языке, генерируя то же целое ряд, не используя рекурсии 2 .
Если представление полицейских не будет взломано в течение десяти дней (240 часов), полицейский докажет, что на самом деле можно было использовать более короткий нерекурсивный подход, раскрыв свое собственное решение. Затем они могут пометить свое представление как безопасное .
Победителем соревнования полицейских станет самое короткое (согласно code-golf ) представление на основе рекурсии, помеченное как безопасное.
Победителем конкурса грабителей станет грабитель, взломавший большинство решений.
1: он должен быть только рекурсивным в синтаксисе; Вам не нужно беспокоиться, например, об оптимизации хвостового вызова.
2: опять же, не рекурсивный в синтаксисе; поэтому вы не можете опубликовать рекурсивное решение и заявить, что оно скомпилировано в цикл благодаря оптимизации хвостового вызова.
Требования к подаче
Каждое представление будет принимать одно целое число n
(от нуля до единицы). Затем отправка выведет или вернет первые n
записи целочисленной серии по выбору. (обратите внимание, что этот целочисленный ряд не должен зависеть отn
). Метод ввода и вывода может отличаться между рекурсивным и нерекурсивным подходом. Целочисленный ряд может быть любым детерминированным рядом с длиной не менее 5. Ряд должен быть объяснен должным образом.
Ваше представление не должно работать для произвольно большого n
, но должно работать по крайней мере n=5
. Нерекурсивный подход должен быть способен работать, по крайней мере, так же, n
как рекурсивный подход, или до n=2^15-1
того, что меньше.
Рекурсия
Ради этой задачи рекурсия определяется как создание желаемой последовательности с использованием функции (или подобной функции конструкции), которая вызывает себя (или вызывает последовательность функций, которая в конечном итоге вызывает сама себя; это включает в себя конструкции, подобные комбинатору Y). Глубина рекурсии должна уходить в бесконечность, а n
в бесконечность. Нерекурсивный подход - это все, что не является рекурсивным.
n
если он теоретически верен, но его нельзя запустить из-за нехватки времени или памяти?
n=5
должен быть вычислен
xfor
не доступен через какой-то импорт?), Поэтому, возможно, этот язык не может конкурировать.
for
делается рекурсивный позади,for
рекурсивный или цикл?