我在APL中遇到了一个问题,包括获取价值并将其评分为扑克游戏。 所以我用了
CHARS⍸CAR3
5 29 30 8 29 23 5
34 34 33 2 34 3 34
6 10 10 15 6 15 15
这是卡片“卡片组”中字符的整数表示 然后我用
{⍺,⍴⍵}⌸(HAND3[1;])
返回每个字母索引的频率,例如字母S出现2次,由第二行中出现的29表示。我无法弄清楚如何为我的矩阵的每一行(3组3x7矩阵)执行此操作 该函数仅返回第一行
5 2
29 2
30 1
8 1
23 1
当我尝试为每一行执行此操作时,它会返回所有字符的频率,而不会分别为每个字符执行此操作。简而言之,我需要它为每一手牌单独执行此功能。
答案 0 :(得分:1)
⌸
处理其参数的主要单元格,对于向量是元素,对于矩阵是行。因此,要⌸
分别处理HANDS3
矩阵的每一行," split" (monadic ↓
)将矩阵分成三个向量,然后将{⍺,⍴⍵}⌸
应用于每个(¨
),如下所示:
HANDS3
5 29 30 8 29 23 55
34 34 33 2 34 3 34
6 10 10 15 6 15 15
↓HANDS3
┌──────────────────┬──────────────────┬──────────────────┐
│5 29 30 8 29 23 55│34 34 33 2 34 3 34│6 10 10 15 6 15 15│
└──────────────────┴──────────────────┴──────────────────┘
{⍺,⍴⍵}⌸¨↓HANDS3
┌────┬────┬────┐
│ 5 1│34 4│ 6 2│
│29 2│33 1│10 2│
│30 1│ 2 1│15 3│
│ 8 1│ 3 1│ │
│23 1│ │ │
│55 1│ │ │
└────┴────┴────┘