JavaScript / Cubix、36バイト
//.!v+u;$I^@O<.Iu
a=>eval(a.join`-`)
それを試してみてください!
JavaScript関数は以下のスニペットを使用してテストできます。Cubixプログラムはここでテストできます。
これはどのように作動しますか?
JavaScript
最初の行は2つのスラッシュで始まるため、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はすべての空白を無視します)。
/ / .
! v +
u ; $
I ^ @ O < . I u a = > e
v a l ( a . j o i n ` -
` ) . . . . . . . . . .
. . .
. . .
. . .
始まり
IPは3番目の行から始まり、東を指します。'I'
コマンドからヒットし、入力から数値を取得し、スタックにプッシュします。次に、'^'
sum-loopにリダイレクトされます。
サムループ
sumループの一部ではないすべての文字を削除し、no-ops('.'
)に置き換えました。IPは最初に2番目の行に到着し、東を指します。
. . .
! v +
u ; $
. . . . . . I u . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . .
. . .
. . .
最初に、'!'
コマンドは一番上の要素をチェックします。その場合0
(つまり、入力の最後に到達した場合)、次の命令('v'
)が実行され、ループからIPが反映されます。まだ入力の最後に達していない場合は、上位2つのアイテムを一緒に追加します('+'
、2番目のアイテムはそのポイントまでの合計で、上位のアイテムは新しい入力です)。次に、IPはキューブの別の面に'u'
文字でラップされ、IPがUターンし、'I'
北を指してコマンドを実行します(別の入力整数を読み取ります)。IPは上面に戻り'$'
、削除命令をスキップ()します(';'
)を開始点に戻ってさらにuターンします。
終わり
IPがループ外に反映されると、次の文字が実行されます。
. . .
. v .
. ; .
. . @ O < . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . .
. . .
. . .
これらの命令は、最上位要素(ゼロ)を削除してから、最上位要素(合計)を整数として出力します。その後、'@'
コマンドに到達したため、プログラムは終了します。