JavaScript / Cubix, 36 bytes
//.!v+u;$I^@O<.Iu
a=>eval(a.join`-`)
¡Intentalo!
La función de JavaScript se puede probar usando el fragmento a continuación, el programa Cubix se puede probar aquí .
¿Como funciona esto?
JavaScript
La primera línea es un comentario de línea a JavaScript, ya que comienza con dos barras diagonales, por lo que JavaScript solo ve la línea inferior ( a=>eval(a.join`-`)
), que toma una matriz como entrada, la une con signos menos en el medio y luego la ejecuta como código, lo que resulta en La sustracción de todos los elementos de la matriz.
let f=
//.!v+u;$I^@O<.Iu
a=>eval(a.join`-`)
console.log(f([1,2,3,4,5]))
console.log(f([3,1,4,1,5]))
Cubix
Cubix ve el siguiente cubo (observe que Cubix ignora todos los espacios en blanco):
/ / .
! v +
u ; $
I ^ @ O < . I u a = > e
v a l ( a . j o i n ` -
` ) . . . . . . . . . .
. . .
. . .
. . .
El principio
La IP comienza en la tercera línea, apuntando hacia el este. Toca el 'I'
comando, que toma un número de la entrada y lo empuja a la pila. Luego, se redirige '^'
al sum-loop.
Sum-loop
Eliminé todos los caracteres que no forman parte del bucle de suma y los reemplacé por no-ops ( '.'
). El IP llega inicialmente a la segunda línea, apuntando hacia el este.
. . .
! v +
u ; $
. . . . . . I u . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . .
. . .
. . .
Primero, el '!'
comando verifica el elemento superior. Si es así 0
( es decir, hemos llegado al final de la entrada), 'v'
se ejecuta la siguiente instrucción ( ), reflejando la IP fuera del bucle. Si aún no hemos llegado al final de la entrada, sumamos los dos elementos superiores ( '+'
el segundo elemento es la suma hasta ese punto, el elemento superior la nueva entrada). Luego, la IP se ajusta a otra cara del cubo, dentro del 'u'
carácter, lo que hace que la IP dé un giro en U y ejecute un 'I'
comando (lea otro entero de entrada), mientras apunta hacia el norte. La IP vuelve a la cara superior, omite ( '$'
) la instrucción de eliminación ( ';'
) y realiza otro cambio de sentido, de vuelta al punto en el que comenzamos.
El fin
Si la IP se refleja fuera del bucle, se ejecutan los siguientes caracteres:
. . .
. v .
. ; .
. . @ O < . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . .
. . .
. . .
Estas instrucciones eliminan el elemento superior (que es cero) y luego generan el elemento superior (la suma) como un entero. Luego '@'
se alcanza el comando, por lo que el programa finaliza.