Écrivez un programme utilisant uniquement des caractères ASCII imprimables qui ne prend aucune entrée. Pour référence, voici les 95 caractères ASCII imprimables dans l'ordre:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Lorsque votre programme est exécuté, il devrait s'imprimer 0
(plus une nouvelle ligne de fin facultative) sur stdout, puis se terminer normalement.
Lorsque chaque caractère de votre programme est remplacé par le caractère N espaces à sa droite en ASCII imprimable, en boucle d'un ~
espace à l'autre, la chaîne ASCII imprimable résultante sera idéalement un programme exécutable dans le même langage qui ne prend aucune entrée et génère N (plus une nouvelle ligne de fin facultative) à stdout, puis se termine normalement, pour N = 1 à 94.
Par exemple, si votre programme d'origine était
@Cat~(88 !)
l'exécuter devrait sortir 0
et déplacer tous les caractères de l'échelle ASCII imprimable par un
ADbu )99!"*
devrait se traduire par un autre programme qui produit 1
. Le faire à nouveau entraînera idéalement un autre programme qui produira2
BEcv!*::"#+
et ainsi de suite avec 3 et 4, etc. jusqu'au point de décaler 94 fois
?B`s}'77~ (
qui est idéalement un programme qui sort 94
.
Le soulagement est que ce n'est que le comportement idéal. Votre programme et ses 94 dérivés n'ont pas tous besoin de fonctionner, mais plus ils fonctionnent consécutivement depuis le début, mieux c'est. (Les programmes qui ne fonctionnent pas peuvent avoir un comportement quelconque.)
Notation
Votre score est le nombre de programmes consécutifs à partir de l'original (celui qui sort 0
) qui fonctionnent, c'est-à-dire sortent correctement leur N. correspondant La réponse avec le score le plus élevé (un maximum de 95) gagne. S'il y a égalité, le programme avec la plus courte longueur en octets gagne.
Par exemple, si la @Cat~(88 !)
sortie 0
et la ADbu )99!"*
sortie 1
mais BEcv!*::"#+
Errored, votre score sera 2. Il est 2 même si avec ?B`s}'77~ (
précision les sorties 94
et même si tous les programmes pour N = 30 à 40 travaillé. Seul le nombre consécutif de programmes de travail, commençant à zéro, est compté.
Remarques
- Pour combattre les conflits potentiels et les failles, les réponses concurrentes doivent produire leurs nombres en décimal sans zéros ni signes en tête ni décimales (c'est-à-dire en clair
0
1
2
...94
). - Les langues qui utilisent des bases ou des formats de nombres différents sont autorisées mais ne sont pas éligibles pour gagner.
- La présence d'une nouvelle ligne de fin facultative n'a pas besoin d'être cohérente entre les programmes.
- Les fonctions et les commandes REPL ne sont pas autorisées, seuls les programmes complets.
la source
ans = 0
?0
imprimée en clair sur stdout. Vous pouvez cependant faire une réponse non compétitive.Réponses:
Ook! , 95 programmes,
1999214066 octetsLe moyen le plus simple de relever ce défi est d'utiliser un langage à jetons qui n'a pas besoin de nouvelles lignes et qui ignore les jetons invalides.
Testé à l'aide de cet interprète *. Suppose des cellules 8 bits pour plus de golfe. Les programmes se chevauchent également légèrement pour économiser certains octets.
* Cet interprète a une bizarrerie étrange selon laquelle le dernier jeton a besoin d'un caractère après son enregistrement, ce qui affecte
n = 62
. Il y a des interprètes 8 bits hors ligne sans cette bizarrerie, mais c'était le meilleur en ligne que j'ai pu trouver.la source
PHP, 95 programmes,
24392063 octetsNécessite l'option output_buffering sur On ou certaines valeurs telles que 4096. Il s'agit par défaut de 4096 pour le service Web (mais pas CLI) au moins pour mon installation.
Le doc dit
ob_clean
qu'il ne retourne rien. Mais cela est resté vrai quand même.Les programmes décalés ressemblent à ceci:
Généré à l'aide de ce programme CJam:
la source
CJam , 10 programmes, 1 octet
Je pensais que je ferais mieux d'ajouter ceci tout de suite avant que quelqu'un d'autre ne soit effronté et ne le fasse: P
Un programme CJam avec juste un nombre simple génère ce nombre, c'est donc un moyen facile d'obtenir 10 programmes qui fonctionnent, à savoir:
0
,1
,2
,3
,4
,5
,6
,7
,8
Et9
.:
Sans surprise, le programme suivant ne sort pas10
mais donne une erreur "opérateur inachevé".Cela fonctionne sans aucun doute dans de nombreuses langues.
la source