Contexte
Comme le savent la plupart des habitués des PPCG, un quine est un programme qui génère son propre code source lors de son exécution. et la distance de Levenshtein entre deux chaînes est le nombre minimal d'insertions, de suppressions et de modifications nécessaires pour changer une chaîne en une autre. Dans ce défi, nous combinons les deux concepts dans une "levenquine": un programme qui génère son propre code source, mais avec une instance d'un caractère inséré, supprimé ou remplacé par un autre caractère. (En d’autres termes, la distance de Levenshtein entre le programme et sa sortie est égale à 1).
La tâche
Écrivez une levenquine de sorte que sa sortie soit une levenquine, le résultat de ce programme est également une levenquine, et ainsi de suite. De plus, à un moment donné, la séquence d'exécution répétée du programme, de sa sortie, de sa sortie, etc. doit finalement revenir au programme d'origine.
Une restriction supplémentaire rend les choses beaucoup plus difficiles: il doit y avoir deux programmes distincts quelque part dans ce cycle qui n'ont pas de caractères en commun (en d'autres termes, aucun caractère n'existe dans un programme et existe également dans l'autre programme). Votre programme va donc devoir se transformer progressivement en un jeu de caractères différent, et inversement.
Si vous utilisez un langage de programmation qui nécessite inévitablement un passe-partout dans tout programme produisant une sortie (par exemple, il n'a qu'un seul moyen d'écrire une print
instruction et aucune autre forme utile de sortie), vous pouvez considérer ce passe-passe comme inexistant à cette fin. de déterminer quels personnages deux programmes ont en commun. Cependant, vous devez toujours compter ce passe-partout pour déterminer la propriété de Levenquine du code.
Des clarifications
- Chacun des "programmes" du cycle peut être un programme complet ou une fonction. Ils ne doivent pas tous être identiques, par exemple, certains peuvent être des programmes complets et d'autres des fonctions.
- Tous les programmes du cycle ne doivent pas nécessairement utiliser la même forme de sortie. Par exemple, certains peuvent sortir via une sortie standard et d'autres via une erreur standard.
- Vos programmes seront exécutés sans entrée (ou dans des langues qui nécessitent une entrée pour faire quoi que ce soit, l'entrée la plus simple possible).
- Des règles appropriées s'appliquent; bien que la Levenquine ne soit pas une vraie quine, vous ne pouvez rien faire qui soit illégal en écrivant une bonne quine. En particulier, le programme null n'est jamais une sortie valide d'une Levenquine appropriée (et ne peut donc pas faire partie de votre cycle).
- La restriction de Levenquine est mesurée en termes de caractères plutôt qu'en octets (par exemple,
ê
un caractère même lorsque la source est codée en UTF-8). La restriction de non-caractères-en-commun est également mesurée en termes de caractères. La condition de victoire compte toutefois en octets.
Condition de victoire
Veuillez soumettre au moins les trois programmes suivants du cycle: le programme le plus court (mesuré en octets); et deux programmes du cycle qui n'ont pas de caractères en commun. Il est possible que deux d'entre eux soient identiques et il est également possible que les trois soient distincts. Le score est basé sur la longueur en octets du programme le plus court, le plus court étant le meilleur, ce qui en fait une sorte de compétition de code-golf .