Votre travail consiste à créer le quine d'itération de la période la plus longue , où la longueur de chaque programme de la séquence est limitée à 500 octets.
Autrement dit, si vous répétez les étapes suivantes:
- Commencez avec votre programme initial
- Exécuter le programme actuel
- Revenez à l'étape 2
Vous finirez par revenir à votre programme d'origine. Le nombre de programmes dans le cycle est votre score, que vous essayez de maximiser.
Aucun des programmes ne peut générer d'erreurs. Chaque programme doit également être exécuté de la même manière (par exemple, pas de versions, implémentations, options de compilateur, plates-formes, etc ...) différentes (EDIT: Oui, tout état externe tel que celui d'un générateur de nombres pseudo aléatoires a été inclus dans le dernier . L'état externe doit être "réinitialisé" après chaque exécution. Si vous utilisez de vrais nombres aléatoires, le pire des cas est supposé.)
Ce qui sépare ce défi de la période d'itération la plus longue (autre que 100 vs 500) est que chaque programme du cycle doit également être de 500 octets ou moins. Cela signifie que le cycle le plus long possible est (256 ^ 501 - 1) / 255 ou moins. C'est bien sûr un grand nombre, mais pas si grand en termes de quantité de code qu'il faut pour calculer. Le défi consiste donc à utiliser autant de possibilités (256 ^ 501 - 1) / 255 que possible, pas un défi de castor occupé.
Les programmes ne sont pas autorisés à accéder à son propre code source. Cependant, un programme vide est autorisé si vous le souhaitez (tant que vous suivez les autres règles).
Étant donné que la vérification manuelle des programmes serait difficile, vous pouvez déterminer le score à l'aide de méthodes théoriques. Vous devez inclure une explication du score et de l'exactitude avec votre programme. Si vous ne pouvez pas déterminer le score, vous pouvez utiliser à la place une limite inférieure du nombre de programmes dans le cycle comme score de facto. Vous êtes autorisé à le mettre à jour lorsque vous trouvez de meilleures limites inférieures ou si vous trouvez le score réel exact.
C'est un défi de code , donc le score le plus élevé gagne!
EDIT: Il est recommandé d'écrire votre score en notation scientifique, afin que les réponses soient plus facilement comparables. Il est tout à fait correct d'avoir également d'autres formes de partition, surtout si elles sont plus clairement liées à votre programme. De plus, les lecteurs sont encouragés à modifier les réponses précédentes pour s'y conformer.