CAPL 1.5+; 6 sans entrée; 10 - 10 = 0 avec entrée
Sidenote,
j'ai lu quelque part [lien?] Que les langues personnalisées ne sont pas autorisées dans les questions de golf, car elles pourraient créer des fonctions intégrées qui font exactement ce que la question demande, bien que j'ai aidé CAPL à rendre le golf plus facile en général . Si vous pensez que ce n'est pas permis ici, faites le moi savoir!
J'ai eu quelques idées de > <> et de Befunge (vous pouvez passer d'une ligne à une autre et utiliser des caractères hexadécimaux pour composer des chiffres), certaines de Ruby et d'autres des miennes pour faciliter la pratique du golf.
CAPL se lit de gauche à droite et passe d'une ligne à la fin de la ligne. Si c'est à la dernière ligne, le programme sera arrêté.
Comme personne ne connait encore cette langue, je vais essayer d’expliquer le plus possible.
Sortie y. 6 octets
bb*.n<
bb*
b
est hexadécimal pour 11
, donc bb*
is 11*11
= 121
, qui est l’équivalent UTF-8 de y
. Cette valeur est poussée dans la pile.
.
Extrait la valeur la plus élevée de la pile et renvoie le format UTF-8. Comme 121
en haut de la pile, l'index est ignoré ici.
n
Génère une nouvelle ligne
<
Envoie le pointeur au début de la ligne, répétant ainsi cette ligne. Comme nous ne nous attendons pas à une contribution, nous pouvons le faire en toute sécurité sans demander à nouveau cette entrée.
Sortie de l'entrée. 10 octets, 0 après bonus
i~a&{X:.)}
i
Prend les entrées de l'utilisateur, place UTF-8 en haut de la pile, puis la longueur par la suite. Ie [72,101,108,108,111,5]
~
Enlève un nombre de la pile, puis inverse cette quantité d'octets. En [111,108,108,101,72]
a
hexadécimal 10
, le caractère de nouvelle ligne
&{...}
crée une boucle infinie. Nous avons des entrées, nous ne pouvons donc pas renvoyer le pointeur à la ligne. Je pourrais placer la fonction sur la ligne ci-dessous, ce qui me protégerait d'un octet, mais les nouvelles lignes ne sont pas autorisées dans ce défi.
X
Supprime la valeur supérieure de la pile (L'index de la boucle)
:.
Duplique la valeur supérieure, puis s'affiche en tant que UTF-8
)
Tourne la pile à droite. ( [1,2,3,4,5]
-> [5,1,2,3,4]
)
Cependant, cela signifie que nous commençons avec une nouvelle ligne, puis commençons à générer l'entrée, puis une nouvelle ligne, puis l'entrée, etc. Si nous ne sommes pas autorisés à commencer par une nouvelle ligne, utilisez le code suivant avec 12 octets, ou 2 après la soustraction le bonus.
iXa#~&{X:.)}
La seule nouvelle commande proposée est celle #
qui pousse le nombre d'éléments de la pile dans la pile.
J'ai supprimé la longueur de i
, car ajouter 1, puis permuter avec la nouvelle ligne est plus long que supprimer et récupérer la longueur.
Juste pour le plaisir, voici un programme "Hello World"
"Hello World"#~
#?!;.<
L' ?!
opération est la même que celle de> <>
y
ou à l'\n
intérieur d'un littéral de chaîne"?