JavaScript / Cubix, 36 Byte
//.!v+u;$I^@O<.Iu
a=>eval(a.join`-`)
Versuch es!
Die JavaScript-Funktion kann mit dem folgenden Snippet getestet werden, das Cubix-Programm kann hier getestet werden .
Wie funktioniert das?
JavaScript
Die erste Zeile ist ein Zeilenkommentar zu JavaScript, da sie mit zwei Schrägstrichen beginnt. Daher wird in JavaScript nur die unterste Zeile ( a=>eval(a.join`-`)
) angezeigt, die ein Array als Eingabe verwendet, mit Minuszeichen dazwischen verknüpft und anschließend als Code ausgeführt die Subtraktion aller Elemente im 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 sieht den folgenden Cube (beachten Sie, dass Cubix alle Leerzeichen ignoriert):
/ / .
! v +
u ; $
I ^ @ O < . I u a = > e
v a l ( a . j o i n ` -
` ) . . . . . . . . . .
. . .
. . .
. . .
Der Anfang
Die IP beginnt in der dritten Zeile und zeigt nach Osten. Es 'I'
drückt den Befehl, der eine Zahl aus der Eingabe entnimmt und auf den Stapel schiebt. Dann wird es '^'
in die Summenschleife umgeleitet .
Summenschleife
Ich habe alle Zeichen, die nicht Teil der Summenschleife sind, entfernt und durch No-Ops ( '.'
) ersetzt. Das IP kommt zunächst in der zweiten Zeile an und zeigt nach Osten.
. . .
! v +
u ; $
. . . . . . I u . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . .
. . .
. . .
Zunächst '!'
überprüft der Befehl das oberste Element. Wenn dies der Fall ist 0
(dh wir haben das Ende der Eingabe erreicht), wird der nächste Befehl ( 'v'
) ausgeführt, der die IP außerhalb der Schleife widerspiegelt. Wenn wir das Ende der Eingabe noch nicht erreicht haben, addieren wir die beiden obersten Elemente ( '+'
das zweite Element ist die Summe bis zu diesem Punkt, das oberste Element die neue Eingabe). Dann springt die IP auf eine andere Seite des Würfels, in das 'u'
Zeichen, wodurch die IP eine Kehrtwende ausführt und einen 'I'
Befehl ausführt (eine andere Ganzzahl liest), während sie nach Norden zeigt. Die IP springt zurück auf die Oberseite, überspringt ( '$'
) den Löschbefehl ( ';'
) und macht eine weitere Kehrtwende, zurück zu dem Punkt, an dem wir begonnen haben.
Das Ende
Wenn die IP außerhalb der Schleife angezeigt wird, werden die folgenden Zeichen ausgeführt:
. . .
. v .
. ; .
. . @ O < . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . .
. . .
. . .
Diese Anweisungen löschen das oberste Element (das Null ist) und geben dann das oberste Element (die Summe) als Ganzzahl aus. Ist der '@'
Befehl dann erreicht, so endet das Programm.