Je me suis rendu compte que je n'avais pas besoin d'utiliser ?
pour représenter le chiffre absent, alors j'en ai utilisé un qui est un multiple de 9 après avoir soustrait 48: x
Cela m'a permis de jouer au golf sur le 3+
, mais cela ne m'a permis d'économiser qu'un octet en raison de la longueur du première ligne avant le conditionnel :(
Un port de mon Befunge-98 Réponse:
5 plus d' octets afin de vérifier si nous avons atteint EOF,
1 octet supplémentaire pour pousser 48 ( "0"
vs '0
),
1 octet supplémentaire pour imprimer la réponse avec .@
,
et 1 octet supplémentaire , parce que la seconde ligne a un espace
pour un total de 8 octets supplémentaires.
~:0`!#|_"0"-+
@.%9-<
Essayez-le en ligne!
Affiche 0
si le chiffre manquant peut être 0 ou 9.
Cela ne fonctionne que dans l'interpréteur PyFunge pour les raisons expliquées ci-dessous.
Explication
Une grande partie de cette explication est copiée de mon explication Befunge-98 , car ce programme est très similaire à celui-ci. fiche sans vergogne
Dans la première ligne du programme, nous additionnons les chiffres, y compris le x, qui est traité comme un 72 en raison de sa valeur ASCII. Cependant, la somme sera la même une fois que nous aurons modifié par 9, donc ce n'est pas pertinent.
~:0`!#|_"0"-+ THE FIRST LINE
~ Gets a character from input - If it is negative, we've reached EOF
:0`! Pushes 0 if the character is positive, 0 otherwise
#|_ Goes to the next line if the value if 0
This also gets the negative value off the stack by using a |
"0"- Subtracts 48 to account for taking in ASCII values
+ Adds this adjusted value to the sum
Si nous venons de modifier par 9, nous nous retrouverions avec le mauvais chiffre, parce que nous voulons 9 - (sum % 9)
. Cependant, nous pouvons faire mieux que 9\-
, ce qui soustrait le reste de 9: si nous rendons la somme négative avant de modifier par 9, nous obtiendrons un résultat positif, équivalent à celui 9 - (sum % 9)
de certains interprètes. C'est ce qui nous oblige à utiliser les interprètes PyFunge pour Befunge 93 et 98, car c'est le seul sur TIO à le faire. Les autres nous donnent une valeur entre -8 et 8 au lieu de 0 et 8
@.%9-< THE SECOND LINE
< Redirects the IP onto this line
- Subtracts the sum from an implicit 0, making it negative
%9 Mods the sum by 9
@. Prints the digit and exits
0
? Et[0, 9]
(tableau ou liste de 2 nombres)?