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