给你一个n到m的整数矩阵,其中n,m> 3,你的任务是找出平均值最小的3乘3子矩阵,并输出这个值。
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
Minimum mean: 14100 65 2 93
3 11 31 89
93 15 95 65
77 96 72 34
Minimum mean: 46.1111 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
Minimum mean: 14 0 0 5 4
4 5 8 4 1
1 4 9 3 1
0 0 1 3 9
0 3 2 4 8
4 9 5 9 6
1 8 7 2 7
2 1 3 7 9
Minimum mean: 2.2222这是密码-高尔夫,所以每种语言中最短的代码都会获胜。我鼓励人们用已经使用过的语言发布答案,即使答案不短于第一种语言。
发布于 2017-02-04 13:41:44
发布于 2017-02-04 12:41:11
@(M)min(conv2(M,ones(3)/9,'valid')(:))发布于 2017-02-04 20:18:25
[:<./@,9%~3+/\3+/\"1]对J中的子数组进行操作的正确方法是使用第三种(_3)形式的裁剪;.,其中x (u;._3) y的意思是在数组y的大小x的每个完整子数组上应用动词u。使用该解决方案只需要多一个字节,但在较大数组上效率要高得多。
[:<./@,9%~3 3+/@,;._3][:<./@,9%~3+/\3+/\"1] Input: 2d array M
] Identity. Get M
"1 For each row
3 \ For each overlapping sublist of size 3
+/ Reduce by addition
3 \ For each overlapping 2d array of height 3
+/ Reduce by addition
9%~ Divide by 9
[: , Flatten it
<./@ Reduce by minimumhttps://codegolf.stackexchange.com/questions/109094
复制相似问题