【发布时间】:2017-07-08 18:16:30
【问题描述】:
在 APL 中,如何将整数或数字拆分为包含其数字的向量?最简洁(最短)的方法是什么?
【问题讨论】:
在 APL 中,如何将整数或数字拆分为包含其数字的向量?最简洁(最短)的方法是什么?
【问题讨论】:
您可以使用以 10 为底的 Decode 的倒数:
10⊥⍣¯1⊢
由于Decode 会根据需要接收尽可能多的数字并对其进行解码,因此它的逆运算将接收一个数字并将其编码为所需的尽可能多的数字,
或者,使用⎕IO←0,您可以尝试在数字向量中找到格式化数字的索引:
⎕D⍳⍕
这比 Encode 的丑陋使用更好
{⍵⊤⍨10⍴⍨⌈10⍟1+⍵}
【讨论】:
(10⍴10)⊤1234567890 == 1 2 3 4 5 6 7 8 9 0
⊢ 做了什么(在您的第一个示例中)?我是 APL 的新手,据我所知,它会返回正确的参数(但这里没有?)。
10 (⊥⍣¯1) ⊢)。 ⊥⍣¯1 本身就是一个函数,所以你需要以某种方式关联 10。
f←10⊥⍣¯1⊢ (大致)等同于f←{10(⊥⍣¯1)⍵}?
(10∘⊥⍣¯1),这意味着(大致)“将 10 作为该函数的常量第一个参数”
【讨论】:
不是最简洁的,但这样做的能力是在最早的 APL 中。 The 1962 book 展示了如何仅使用基本函数和矩阵乘法来处理位置数字系统:
【讨论】:
我显然尝试过这样做:
a⊤⍨10×b÷b←⍳⌈10⍟a←⍵
【讨论】: