在 APL 中检查每个相邻的列表对是否有序(默认编程)
Check that each adjacent pair of a list is in order (tacit programming) in APL
给定 APL 中的列表,我想检查每个相邻对是否按顺序排列。
所以,给定 (a0, a1, ..., an)
,我想计算:
(a0 ≤ a1) ∧ (a1 ≤ a2) ∧ .... ∧ (a[n-1] ≤ an)
我不想计算等效形式,我想使用默认编程。
我的解决方案是 ((¯1↓⊢)∧.≤(1↓⊢))
但它似乎太冗长了。
有人有什么想法吗?
⍳∘≢≡⍋
⍋
计算 grade 并且如果数组已经排序,那么它将只是元素的枚举,所以我们使用 ≡
将等级与 ⍳∘≢
这是你的数组长度的数组的索引。
您可以通过 searching for "sorted?" 在 APLcart 上找到它。
∧/2≤/⊢
X f/ Y
使用大小 X
的滑动 windows 计算 Y
中的 f
减少量。因此,如果 X←2
那么我们得到成对减少,或者换句话说,在后续对之间插入 f
。需要 ⊢
来完成 3-train 2 ≤/ ⊢
然后我们只需要使用 ∧/
将所有结果布尔值与在一起
给定 APL 中的列表,我想检查每个相邻对是否按顺序排列。
所以,给定 (a0, a1, ..., an)
,我想计算:
(a0 ≤ a1) ∧ (a1 ≤ a2) ∧ .... ∧ (a[n-1] ≤ an)
我不想计算等效形式,我想使用默认编程。
我的解决方案是 ((¯1↓⊢)∧.≤(1↓⊢))
但它似乎太冗长了。
有人有什么想法吗?
⍳∘≢≡⍋
⍋
计算 grade 并且如果数组已经排序,那么它将只是元素的枚举,所以我们使用 ≡
将等级与 ⍳∘≢
这是你的数组长度的数组的索引。
您可以通过 searching for "sorted?" 在 APLcart 上找到它。
∧/2≤/⊢
X f/ Y
使用大小 X
的滑动 windows 计算 Y
中的 f
减少量。因此,如果 X←2
那么我们得到成对减少,或者换句话说,在后续对之间插入 f
。需要 ⊢
来完成 3-train 2 ≤/ ⊢
然后我们只需要使用 ∧/