JavaScript / Cubix, 36 bajtów
//.!v+u;$I^@O<.Iu
a=>eval(a.join`-`)
Spróbuj!
Funkcję JavaScript można przetestować za pomocą poniższego fragmentu, program Cubix można przetestować tutaj .
Jak to działa?
JavaScript
Pierwszy wiersz jest komentarzem do kodu JavaScript, ponieważ zaczyna się od dwóch ukośników, więc JavaScript widzi tylko dolną linię ( a=>eval(a.join`-`)
), która pobiera tablicę jako dane wejściowe, łączy ją ze znakami minus pomiędzy nimi, a następnie uruchamia ją jako kod, w wyniku czego odejmowanie wszystkich elementów w tablicy.
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 widzi następujący sześcian (zauważ, że Cubix ignoruje wszystkie białe znaki):
/ / .
! v +
u ; $
I ^ @ O < . I u a = > e
v a l ( a . j o i n ` -
` ) . . . . . . . . . .
. . .
. . .
. . .
Początek
Adres IP zaczyna się na trzeciej linii, wskazując na wschód. Uderza w 'I'
polecenie, które pobiera liczbę z wejścia i wypycha ją na stos. Następnie jest przekierowywany '^'
do pętli sumowania.
Pętla sumy
Usunąłem wszystkie znaki nie będące częścią pętli sumy i zastąpiłem je no-ops ( '.'
). IP początkowo dociera do drugiej linii, wskazując na wschód.
. . .
! v +
u ; $
. . . . . . I u . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . .
. . .
. . .
Najpierw '!'
polecenie sprawdza górny element. Jeśli tak jest 0
(tzn. Osiągnęliśmy koniec wejścia), wykonywana jest następna instrukcja ( 'v'
), odzwierciedlająca adres IP poza pętlą. Jeśli nie osiągnęliśmy jeszcze końca danych wejściowych, dodajemy razem dwa górne elementy ( '+'
, drugi element jest sumą do tego momentu, górny element to nowe dane wejściowe). Następnie IP zawija się do innej powierzchni sześcianu, w 'u'
znak, co powoduje, że IP wykonuje zawracanie i wykonuje 'I'
polecenie (czytaj kolejną liczbę całkowitą), wskazując na północ. Adres IP wraca do górnej powierzchni, pomija ( '$'
) instrukcję usuwania (';'
) i wykonuje kolejny zwrot w tył, do punktu, w którym zaczęliśmy.
Koniec
Jeśli adres IP jest odzwierciedlany poza pętlą, wykonywane są następujące znaki:
. . .
. v .
. ; .
. . @ O < . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . .
. . .
. . .
Instrukcje te usuwają górny element (który jest zero), a następnie wypisują górny element (sumę) jako liczbę całkowitą. Następnie '@'
polecenie zostaje osiągnięte, więc program się kończy.