CAPL 1.5+; 6 sin entrada; 10-10 = 0 con entrada
Además
, he leído en alguna parte [¿enlace?] Que los idiomas personalizados no están permitidos en las preguntas de golf, ya que podrían hacer funciones integradas que hagan exactamente lo que la pregunta pregunta, sin embargo hice CAPL para facilitar el golf en general . Si crees que esto no está permitido aquí, ¡házmelo saber!
Tengo algunas ideas de > <> y Befunge (puedes moverte entre líneas y usar caracteres hexadecimales para empujar números), algunas de Ruby y otras mías para facilitar el golf.
CAPL lee de izquierda a derecha y va una línea hacia abajo al final de la línea. Si es como la última línea, el programa se cerrará.
Como nadie conoce este idioma todavía, intentaré explicar lo más posible.
Salida y. 6 bytes
bb*.n<
bb*
b
es hexadecimal para 11
, entonces bb*
es 11*11
= 121
, que es el equivalente UTF-8 de y
. Este valor se empuja a la pila.
.
Muestra el valor superior de la pila y se muestra como UTF-8. Como 121
está encima de la pila, el índice se ignora aquí.
n
Emite una nueva línea
<
Envía el puntero al principio de la línea, repitiendo así esa línea. Como no esperamos entradas, podemos hacerlo de forma segura sin volver a pedir la entrada.
Salida de entrada. 10 bytes, 0 después de la bonificación
i~a&{X:.)}
i
Toma información del usuario, empuja como UTF-8 en la parte superior de la pila y empuja la longitud después de eso. Es decir, [72,101,108,108,111,5]
~
saca un número de la pila y luego invierte esa cantidad de bytes. Es decir, [111,108,108,101,72]
a
hexadecimal para 10
, el personaje de nueva línea
&{...}
hace un bucle infinito. Tenemos entrada, por lo que no podemos enviar el puntero a la línea. Podría colocar la función en la línea de abajo, lo que me ahorraría un byte, pero no se permiten nuevas líneas en este desafío.
X
Elimina el valor superior de la pila (El índice del bucle)
:.
Duplica el valor superior, luego sale como UTF-8
)
Gira la pila a la derecha. ( [1,2,3,4,5]
-> [5,1,2,3,4]
)
Sin embargo, esto significa que comenzamos con una nueva línea, luego comenzamos a generar la entrada, luego una nueva línea, luego la entrada, etc. Si no se nos permite comenzar con una nueva línea, use el siguiente código con 12 bytes, o 2 después de restar El bono.
iXa#~&{X:.)}
El único comando nuevo aquí es #
, que empuja la cantidad de elementos en la pila a la pila.
Eliminé la longitud de i
, porque agregar 1, luego intercambiar con la nueva línea es más largo que eliminar y obtener la longitud nuevamente.
Solo por diversión, aquí hay un programa "Hello World"
"Hello World"#~
#?!;.<
La ?!
operación es la misma que la de> <>
y
o\n
dentro de una cadena literal"?