APL扑克游戏得分

时间:2018-03-11 01:45:41

标签: matrix array-formulas frequency-analysis apl dyalog

我在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

当我尝试为每一行执行此操作时,它会返回所有字符的频率,而不会分别为每个字符执行此操作。简而言之,我需要它为每一手牌单独执行此功能。

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│    │    │
└────┴────┴────┘

Try it online!