我收到了填充有字母数字值的矩阵,其中不包含小写字母,如下所示:
XX11X1X
XX88X8X
Y000YYY
ZZZZ789
ABABABC
我被委托计算每行重复出现的次数,并根据重复字符的排名进行积分。我使用了{⍺ (≢⍵)}⌸¨ ↓ m
来帮助我。对于上面的示例,我会得到类似于这样的结果:
X 4 X 4 Y 4 Z 4 A 3
1 3 8 3 0 3 7 1 B 3
8 1 C 1
9 1
这很棒,但现在我需要编写一个函数,能够将数字与每个字母相乘。我可以使用
⊃
访问第一个矩阵,但是我完全不知道如何访问其他矩阵。我可以简单地编写⊃w[2]
和⊃w[3]
等等,但我需要一种方法来在一个函数中同时更改每个矩阵。对于这个示例,排名数组如下:ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210
因此,对于第一个数组XX11X1X
,对应的是:X 4
1 3
因此,X
在数组中排名第三,所以对应的是3,1在第35个位置,所以是35。最终得分可能类似于(3×104) + (35×103)。我的最大问题不一定是评分部分,而是能够在一个函数中单独访问每个矩阵。所以对于这个嵌套数组:
X 4 X 4 Y 4 Z 4 A 3
1 3 8 3 0 3 7 1 B 3
8 1 C 1
9 1
如果我输入
arr[1]
,它会返回一个标量。 X 4
1 3
我想知道如何获取矩阵的列。使用⍴ arr[1]
并没有给我确认,所以我可以使用⊃arr[1]
来获取矩阵本身并逐个访问每一列。这就是我卡住的地方。我正在尝试编写一个函数来对每个矩阵进行计算,然后将这些结果保存到数组中。我可以轻松地对第一个矩阵进行计算,但我无法对所有矩阵进行计算。我可能在使用{⍺ (≢⍵)}⌸¨ ↓ m
时犯了错误。谢谢。