Alicia , 28 18 bytes
Gracias a @MartinEnder por jugar al golf 10 bytes
=I.!'`-+?hn
>3-nO@
Pruébalo en línea!
Este envío utiliza un método diferente al de la respuesta de @ MartinEnder.
Esta sumisión da como resultado la 0x00
falsedad y la 0x01
verdad.
Así que aquí hay una versión que sale 0
o, en 1
cambio, ¡ pruébalo!
Explicación
La explicación a continuación es para la versión "visible". Ambos son muy similares, excepto en el primer programa, el último o
no convierte el 0
o 1
en una cadena (porque estamos en modo cardinal), sino que toma el número y muestra el carácter en ese punto del código.
= Does nothing, but will be useful later on
I Read a character and push its code point onto the stack
If there is no more input, -1 is pushed instead
. Duplicate it
! Store it on the tape
# Skip the next command
o Gets skipped
'` Push 96
- Subtract it from the character
+ And add it to the total
? Load the number on the tape
h Increment it
n And negate it
For all characters that are read, ?hn results in 0,
but if -1 is pushed, then the result becomes 1
Después de esto, la IP se ajusta al borde izquierdo en el =
. Si el valor superior de la pila es 0
, la IP continúa con su ruta, aumentando la suma total de todos los caracteres, una vez que se hace con la entrada (la parte superior de la pila será 1
), entonces la IP gira a la derecha (90 grados en sentido horario).
Una cosa es importante tener en cuenta, el bucle en la primera línea iterará una vez que la entrada haya finalizado. Esto restará 97
( 96
del '`
y -1
de la falta de entrada) del total.
> Set the direction of the IP to East
3- Subtract 3 from it (yields 0 if sum is 100, something else otherwise)
n Negate it; Zero becomes 1, non-zero numbers become 0
/ Mirror; the IP gets redirected South-East
The IP reflects off the bottom and goes North-East
Now the program is in Ordinal mode, where numbers are automatically converted into strings when being used
o Output the top of the stack as a string
IP reflects off the top and heads South-East
@ End the program