JavaScript / Cubix, 36 byte
//.!v+u;$I^@O<.Iu
a=>eval(a.join`-`)
Cobalah!
Fungsi JavaScript dapat diuji menggunakan cuplikan di bawah ini, program Cubix dapat diuji di sini .
Bagaimana cara kerjanya?
JavaScript
Baris pertama adalah komentar baris untuk JavaScript, karena dimulai dengan dua garis miring, jadi JavaScript hanya melihat garis bawah ( a=>eval(a.join`-`)
), yang menggunakan array sebagai input, bergabung dengan tanda minus di antara, dan kemudian menjalankannya sebagai kode, menghasilkan pengurangan semua elemen dalam array.
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 melihat kubus berikut (perhatikan bahwa Cubix mengabaikan semua spasi putih):
/ / .
! v +
u ; $
I ^ @ O < . I u a = > e
v a l ( a . j o i n ` -
` ) . . . . . . . . . .
. . .
. . .
. . .
Awal mula
IP dimulai pada baris ketiga, menunjuk ke timur. Itu hits 'I'
perintah, yang mengambil nomor dari input, dan mendorongnya ke tumpukan. Kemudian, diarahkan '^'
ke sum-loop.
Jumlah loop
Saya menghapus semua karakter bukan bagian dari jumlah loop, dan menggantinya dengan no-ops ( '.'
). IP awalnya tiba di baris kedua, menunjuk ke timur.
. . .
! v +
u ; $
. . . . . . I u . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . .
. . .
. . .
Pertama, '!'
perintah memeriksa elemen atas. Jika itu 0
(yaitu kita telah mencapai akhir input), instruksi selanjutnya ( 'v'
) dijalankan, yang mencerminkan IP dari loop. Jika kami belum mencapai akhir input, kami menambahkan dua item teratas bersamaan ( '+'
, item kedua adalah jumlah hingga titik itu, item teratas input baru). Kemudian, IP membungkus ke wajah lain dari kubus, ke dalam 'u'
karakter, yang menyebabkan IP untuk berbelok-u, dan menjalankan 'I'
perintah (baca integer input lain), sambil menunjuk ke utara. IP membungkus kembali ke wajah atas, melompati ( '$'
) instruksi hapus ( ';'
) dan melakukan putaran u lainnya, kembali ke titik di mana kita mulai.
Tamat
Jika IP tercermin dari loop, karakter berikut dieksekusi:
. . .
. v .
. ; .
. . @ O < . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . .
. . .
. . .
Instruksi-instruksi ini menghapus elemen atas (yang nol), dan kemudian menampilkan elemen atas (jumlahnya) sebagai bilangan bulat. Kemudian '@'
perintah tercapai, sehingga program berakhir.