JavaScript / Cubix, 36 байт
//.!v+u;$I^@O<.Iu
a=>eval(a.join`-`)
Спробуй це!
Функцію JavaScript можна протестувати за допомогою фрагмента, наведеного нижче, програма Cubix можна протестувати тут .
Як це працює?
JavaScript
Перший рядок - це коментар до рядка JavaScript, оскільки він починається з двох косих рядків, тому JavaScript бачить лише нижній рядок ( a=>eval(a.join`-`)
), який приймає масив як вхідний, приєднується до нього із знаками мінус між ними, а потім запускає його як код, в результаті чого віднімання всіх елементів масиву.
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 бачить такий куб (зауважте, що Cubix ігнорує всі пробіли):
/ / .
! v +
u ; $
I ^ @ O < . I u a = > e
v a l ( a . j o i n ` -
` ) . . . . . . . . . .
. . .
. . .
. . .
Початок
ІС починається з третьої лінії, вказуючи на схід. Він потрапляє на 'I'
команду, яка приймає число з входу і штовхає його до стеку. Потім він переспрямовується '^'
в цикл суми.
Сума-петля
Я видалив усі символи, що не входять до циклу суми, і замінив їх no-ops ( '.'
). ІС спочатку надходить на другу лінію, вказуючи на схід.
. . .
! v +
u ; $
. . . . . . I u . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . .
. . .
. . .
Спочатку '!'
команда перевіряє верхній елемент. Якщо це так 0
(тобто ми дійшли до кінця вводу), 'v'
виконується наступна інструкція ( ), що відображає IP з циклу. Якщо ми ще не досягли кінця введення, додаємо два верхні пункти разом ( '+'
другий пункт - це сума до цього моменту, верхній елемент - новий ввід). Потім IP переходить на інше обличчя куба, в 'u'
символ, який змушує IP зробити поворот і виконувати 'I'
команду (читати інше ціле число), вказуючи на північ. IP повертається до верхньої частини, пропускає ( '$'
) інструкцію видалення (';'
) і робить ще один поворот, повертаючись до тієї точки, з якої ми почали.
Кінець
Якщо IP відбивається з циклу, виконуються такі символи:
. . .
. v .
. ; .
. . @ O < . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . .
. . .
. . .
Ці інструкції видаляють верхній елемент (який дорівнює нулю), а потім виводять верхній елемент (суму) у вигляді цілого числа. Потім '@'
команда досягається, і програма закінчується.