Fil de flics
Dans ce fil, votre tâche consiste à créer un programme / fonction basé sur la récursivité pour générer une série entière. Les voleurs essaieront de trouver une solution non récursive plus courte dans le fil des voleurs .
Synopsis du défi
Dans de nombreux langages, les fonctions récursives peuvent simplifier considérablement une tâche de programmation. Cependant, la surcharge de syntaxe pour une récursivité appropriée peut limiter son utilisation dans le code-golf.
Les flics créeront un programme ou une fonction prenant un seul entier n
, qui générera les premières n
entrées d'une série entière, en utilisant uniquement la récursivité 1 . Ils doivent également s'assurer qu'il existe un moyen non récursif plus court de générer la séquence afin de marquer leur entrée comme sûre.
Les voleurs essaieront de trouver un programme ou une fonction plus courte dans le même langage, générant la même série d'entiers, sans récurrence 2 .
Si la soumission des flics n'est pas fissurée dans les dix jours (240 heures), le flic prouvera qu'il était en fait possible d'avoir une approche non récursive plus courte en révélant leur propre solution. Ils peuvent ensuite marquer leur soumission comme sûre .
Le gagnant du défi des flics sera la soumission basée sur la récursivité la plus courte (selon le code-golf ) marquée comme sûre.
Le vainqueur du défi des voleurs sera le voleur qui a trouvé le plus de solutions.
1: Il doit seulement être récursif dans sa syntaxe; vous n'avez pas à vous soucier par exemple de l'optimisation des appels de queue.
2: Encore une fois, non récursif dans la syntaxe; vous ne pouvez donc pas publier une solution récursive et revendiquer sa compilation dans une boucle grâce à l'optimisation des appels de queue.
Conditions de soumission
Chaque soumission prendra un seul entier n
(zéro ou basé sur un). La soumission affichera ou renverra alors les premières n
entrées d'une série entière de choix. (notez que cette série entière ne doit pas dépendre n
). La méthode d'entrée et de sortie peut différer entre l'approche récursive et non récursive. La série entière peut être toute série déterministe d'une longueur d'au moins 5. La série doit être expliquée correctement.
Votre soumission ne doit pas nécessairement fonctionner pour une taille arbitraire n
, mais devrait fonctionner au moins n=5
. L'approche non récursive doit pouvoir fonctionner au moins au même niveau n
que l'approche récursive, ou jusqu'à la n=2^15-1
plus petite des deux.
Récursivité
Pour relever ce défi, la récursivité est définie comme la création de la séquence souhaitée à l'aide d'une fonction (ou d'une construction de type fonction) qui s'appelle elle-même (ou appelle une séquence de fonctions qui finit par s'appeler elle-même; cela inclut des constructions comme le combinateur Y). La profondeur de récursivité doit aller à l'infini comme n
à l'infini. L'approche non récursive est tout ce qui n'est pas récursif.
n
s'il est théoriquement correct, mais qu'il ne peut pas être exécuté en raison de contraintes de temps ou de mémoire?
n=5
doit être calculé
xfor
soit disponible via une sorte d'importation?) Donc peut-être que cette langue ne peut pas rivaliser.
for
se fait par récursif derrière, estfor
récursif ou en boucle?