APLには、他の数値ベースを「デコード」するために使用されるプリミティブ関数があります。関数の左側では、各桁に関連付けられたプレースメント値をもう一方の数値ベースに入れます。右側には、あなたが興味を持っている数字のベクトルを置くAPLの⊥-デコードで、基数ベクトルに余分な数値が必要なのはなぜですか?
をたとえば:。
2 2 2 2 ⊥ 0 1 0 1 ⍝ (What you type in) Convert 0101 form base 2 into base 10
5 ⍝ (What the interpreter computes)
しかし、基数ベクトルの左端の2は、任意のデコードの計算に使用されることはありません。たとえば、
¯48 2 2 2 ⊥ 0 1 0 1 ⍝ We can replace the leftmost radix digit with a random number
5 ⍝ Same answer as before
¯48 2 2 2 ⊥ 1 1 1 1 ⍝ Just to prove that the leftmost decode digit is unused
15 ⍝ Correct decode of 1111
65 2 2 2 ⊥ 1 1 1 1 ⍝ Try another random number for testing
15 ⍝ Again, the correct answer is output
左端の数字が使用されない場合、なぜAPLはそれを必要としますか? (具体的には、APLは基数ベクトルと入力ベクトルの両方が同じ長さであることが必要です)私が気づいていないデコード関数にはいくつかの用途がありますか?
おそらく、最も左の値の桁が範囲内にあることを検証するために使用されていますか? – jasonharper
うーん、良い考え。しかし、通訳者は文句を言っていないようです: '2 2 2 2⊥44 1 1 1'は '359'を返します – Mahkoe