Défi
Dans ce défi, vous allez écrire le premier programme, p 1 , d'une séquence infinie de programmes, dans laquelle l'exécution de p n sorties / génère le programme p n + 1 . Lors de la concaténation des premiers n> = 2 programmes, la séquence doit sortir n
.
Exemple
Disons que les 4 premiers programmes sont:
p1 p2 p3 p4
Si je devais courir p1
, il devrait produire:
p2
Si je devais courir p1p2
, il devrait produire:
2
Si je devais l'exécuter, p1p2p3p4
il devrait produire:
4
Si je devais courir p4
, il devrait générer le programme suivant dans la séquence:
p5
Notation
Votre score est le nombre d'octets des premiers 10
programmes.
code-challenge
code-generation
Downgoat
la source
la source
p1p2p3...
seront-elles toujours de p1 à pn ?Réponses:
Pyth, 12
p1:
p2:
1
p3:
1
etc..
p1p2p3:
Sortie:
3
Explication:
Au premier lancement, cette commande affiche la longueur d'une seule chaîne de caractères,
1
. Cela se trouve également être un programme Pyth valide, renvoyant à1
nouveau. Par conséquent, pn + 1 est toujours1
. Lorsque les programmes sont chaînés,p1
affiche la longueur des programmes chaînés, qui seran
.la source
Lua,
950900 octetsNon golfé:
Explication:
La première ligne saisit la source entière du programme. Ensuite, nous comparons la longueur du programme entier à 1 + la longueur d'un seul programme. Si la taille du programme en cours est inférieure à cette valeur, la source est imprimée, qui est le programme suivant, p2, et nous quittons. Chaque itération n'est qu'une quine. Lorsque plusieurs d'entre eux sont réunis, le conditionnel échoue et nous imprimons la longueur du programme concaténé divisée par la longueur d'un programme, qui est le nombre de programmes concaténés, n.
la source
Vitsy , 19 octets
Ne pas traiter les chaînes ici, mais utiliser des astuces de méthode.
p1
p2
p3
Ainsi de suite.
Explication ci-dessous:
Essayez-le en ligne!
la source
Vitsy , 14 octets
Semblable aux réponses Pyth et Jolf, je mappe des chaînes. La seule différence est que j'utilise les fonctionnalités de retour à la ligne pour m'assurer d'avoir toujours la bonne longueur.
p1
p2
Remplacez 1 par un numéro unique.
p3 et ainsi de suite correspondent à ce modèle, et vous pouvez le faire jusqu'à
Integer.MAX_VALUE
la restriction entière de la langue.Explication:
Essayez-le en ligne!
la source
Sérieusement, 15 octets
Premier programme, 6 octets (contient un non imprimable):
Vidage hexadécimal:
Ce programme imprime
1
: Essayez-le en ligneLes autres programmes sont tous
1
, un programme valide qui s'imprime comme la réponse Pyth. Le programme d'origine imprime la longueur de son code source moins 5 et se termine immédiatement.1
s ajoutés à la fin augmentent la longueur du code source d'un octet à chaque fois, mais ne sont jamais exécutés.la source
Jolf , 14 octets
Essayez-le ici!
Une fois exécuté, cela s'imprime
1
. Ainsi,p2 = 1
. Exécution desp2
rendements1
. Donc, pour tousN > 1
,pN = 1
.Observer
p1p2
:a-1q41
. Cela se traduit par:Étant donné que l'impression implicite est désactivée après la première impression, cela s'imprime
2
, car la longueur du code source moins 4 est 2. Et ainsi de suite.la source
Rubis, 318 octets
p 1 :
Chaque programme séparé p i sorties cette Quine une ligne:
_="_=%p;puts _%%_";puts _%_
.Lorsque vous ajoutez ces quines à la fin de p 1 , elles finissent comme des lignes dans l'
DATA
objet car elles sont en dessous de la magie__END__
.Voici un test:
Les dix premiers programmes concaténés ressemblent à ceci (318 octets):
la source
C #, 2099 + 7 = 2106 octets
Premier programme (utilise le drapeau du compilateur
/main:A
):Deuxième programme:
Troisième programme:
Vous avez eu l'idée.
la source
Javascript ES6, score
483455Programme 1, 77 octets:
Programme 2 et au-delà, 42 octets chacun:
la source
PHP, 1470 octets
Programme 1: 219 octets:
programme 2 et au-delà de 139 octets:
utiliser comme:
Utilise une version légèrement golfée de la technique de php quine détaillée ici: http://10types.co.uk/the-lab/a-minimal-php-quine/
la source