JavaScript / Cubix, 36 bayt
//.!v+u;$I^@O<.Iu
a=>eval(a.join`-`)
Dene!
JavaScript işlevi aşağıdaki snippet kullanılarak test edilebilir, Cubix programı burada test edilebilir .
Bu nasıl çalışıyor?
JavaScript
İlk satır, JavaScript'e bir satır açıklamasıdır, çünkü iki eğik çizgi ile başlar, bu nedenle JavaScript yalnızca a=>eval(a.join`-`)
bir diziyi giriş olarak alır, aradaki eksi işaretleri ile birleştirir ve ardından kod olarak çalıştırır. dizideki tüm öğelerin çıkarılması.
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 aşağıdaki küpü görüyor (Cubix'in tüm boşlukları yok saydığına dikkat edin):
/ / .
! v +
u ; $
I ^ @ O < . I u a = > e
v a l ( a . j o i n ` -
` ) . . . . . . . . . .
. . .
. . .
. . .
Başlangıç
IP üçüncü hatta başlar ve doğuyu gösterir. 'I'
Girişten bir sayı alan komuta vurur ve yığına iter. Ardından, '^'
toplam döngüsüne yönlendirilir .
Toplam döngü
Toplam döngüsünün parçası olmayan tüm karakterleri kaldırdım ve onları no-ops ( '.'
) ile değiştirdim. IP başlangıçta doğuya bakacak şekilde ikinci hatta gelir.
. . .
! v +
u ; $
. . . . . . I u . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . .
. . .
. . .
İlk olarak, '!'
komut üst öğeyi kontrol eder. Eğer 0
öyleyse (yani girişin sonuna ulaştık), 'v'
IP'yi döngüden yansıtan bir sonraki talimat ( ) yürütülür. Henüz girdinin sonuna gelmediysek, ilk iki öğeyi birlikte ekleriz ( '+'
ikinci öğe o noktaya kadar olan toplam, yeni girdinin üst öğesi). Daha sonra IP, küpün başka bir yüzüne 'u'
, IP'ye u dönüşü yapmasına ve bir 'I'
komut yürütmesine (başka bir giriş tamsayısını oku) neden olan karaktere sarar . IP üst yüze geri sarılır '$'
, silme talimatını ( ';'
) atlar ( ) ve başladığımız noktaya geri döner.
Son
IP döngüden yansıtılırsa, aşağıdaki karakterler yürütülür:
. . .
. v .
. ; .
. . @ O < . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . .
. . .
. . .
Bu talimatlar üst öğeyi (sıfırdır) siler ve ardından üst öğeyi (toplamı) bir tamsayı olarak verir. Sonra '@'
komuta ulaşılır, böylece program sona erer.