Me di cuenta de que no necesito usar ?
para representar el dígito ausente, así que usé uno que es un múltiplo de 9 después de restar 48: x
Esto me permitió jugar golf 3+
, pero solo me ahorró 1 byte debido a la longitud del primera línea antes del condicional :(
Un puerto de mi respuesta Befunge-98:
5 bytes más para verificar si hemos alcanzado EOF,
1 byte más para presionar 48 ("0"
vs '0
),
1 byte más a imprimir con la respuesta .@
,
y 1 byte más, ya que el segundo La línea tiene un espacio
para un total de 8 bytes más.
~:0`!#|_"0"-+
@.%9-<
Pruébalo en línea!
Emite 0
si el dígito faltante podría ser 0 o 9.
Esto solo funciona en el intérprete de PyFunge por las razones que se explican a continuación.
Explicación
Gran parte de esta explicación está copiada de mi explicación de Befunge-98 , ya que ese programa es muy similar a este.enchufe descarado
En la primera línea del programa, sumamos los dígitos, incluida la x, que se trata como un 72 debido a su valor ASCII. Sin embargo, la suma será la misma una vez que hayamos modificado por 9, así que esto es irrelevante.
~: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 solo modificáramos por 9, nos quedaríamos con el dígito incorrecto, porque queremos 9 - (sum % 9)
. Sin embargo, podemos hacerlo mejor que 9\-
, lo que restaría el resto de 9: si hacemos que la suma sea negativa antes de modificar por 9, obtendremos un resultado positivo, equivalente al 9 - (sum % 9)
de algunos intérpretes. Esto es lo que nos obliga a usar los intérpretes de PyFunge para Befunge 93 y 98, ya que es el único en TIO que hace esto. Los otros nos dan un valor entre -8 y 8 en lugar de 0 y 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
? ¿Qué pasa con[0, 9]
(matriz o lista de 2 números)?