Mi sono reso conto che non ho bisogno di usare ?
per rappresentare la cifra assente, quindi ho usato uno che è un multiplo di 9 dopo aver sottratto 48: x
Questo mi ha permesso di giocare a golf off 3+
, ma mi ha salvato solo 1 byte a causa della lunghezza del prima riga prima del condizionale :(
Una porta della mia risposta Befunge-98:
più 5 byte al fine di verificare se abbiamo raggiunto EOF,
più 1 byte a spingere 48 ( "0"
vs '0
),
1 byte di più per stampare la risposta con .@
,
e 1 più byte, perché la seconda La linea ha uno spazio
per un totale di altri 8 byte.
~:0`!#|_"0"-+
@.%9-<
Provalo online!
Emette 0
se la cifra mancante potrebbe essere 0 o 9.
Questo funziona solo nell'interprete PyFunge per i motivi spiegati di seguito.
Spiegazione
Gran parte di questa spiegazione è copiata e incollata dalla mia spiegazione di Befunge-98 , poiché quel programma è molto simile a questo. spina spudorata
Nella prima riga del programma, sommiamo le cifre, inclusa la x, che viene trattata come un 72 a causa del suo valore ASCII. Tuttavia, la somma sarà la stessa una volta che abbiamo modificato 9, quindi questo è irrilevante.
~: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
Se modifichiamo solo 9, verremmo lasciati con la cifra sbagliata, perché vogliamo 9 - (sum % 9)
. Tuttavia, possiamo fare di meglio 9\-
, il che sottrarrebbe il resto da 9: se rendessimo la somma negativa prima di modificare di 9, otterremo un risultato positivo, equivalente a quello 9 - (sum % 9)
di alcuni interpreti. Questo è ciò che ci impone di utilizzare gli interpreti PyFunge sia per Befunge 93 che per 98, poiché è l'unico su TIO a farlo. Gli altri ci danno un valore tra -8 e 8 invece di 0 e 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
? Che dire di[0, 9]
(array o elenco di 2 numeri)?