-1

我正在尝试实现一个 APL 程序(ClosedSeg),它可以计算布尔数组中孤立正方形段的总数。例如:

arr1
1 1 1 0 0 0 0
1 0 1 0 0 1 1
1 1 1 0 0 1 1
0 0 0 0 0 0 0
0 0 0 1 1 1 1

ClosedSeg arr1 ⍝ Four 1's border (non-linear) are minimum to be considered a segment.
2

arr2
1 1 1 1 0 0 0 0 0
1 0 0 1 0 1 1 1 0
1 1 1 1 0 1 0 1 0
1 1 0 0 0 1 1 1 1
0 0 0 0 0 0 1 0 1
0 0 0 0 0 0 1 1 1

ClosedSeg arr2 ⍝ Adjacent isolated segments counts.
4

arr3
1 1 1 1 0 0 0 0 0
1 0 0 1 0 1 1 1 0
1 0 1 1 0 1 0 1 1
1 1 1 0 0 1 1 0 1
0 0 0 0 0 0 1 0 1
0 0 1 0 0 0 1 1 1
0 1 0 1 0 0 0 0 0
0 0 1 0 0 0 0 0 0

ClosedSeg arr3 ⍝ Any segment shapes are acceptable, note that diagonal 1's is not a segment border.
2

我被困在这一点上。

4

1 回答 1

1

对于一个无聊的夜晚来说,这是一个很好的谜题。但是,SO 的总体思想是讨论“代码问题”,而不是为了获得便宜的编码器而发布“规范”。所以,一般来说,你应该发布一些代码,表明你自己尝试过,正如 Orbling 建议的那样。然而,APL 社区(一般来说和 SO 上的)通常非常友好、乐于助人——而且对谜题也很感兴趣——所以你很有可能真的得到了解决方案。

你能请。还指定如何处理“方形和更多” - 以下示例是否计数?

另外:您使用的是哪个 APL 以及哪个版本?提示:Dyalog 16 添加了“ Stencil ”-操作符,这可能有助于解决这个问题——如果你使用 Dyalog...

1 1 1 1 0 0 0 0 0
1 0 0 1 1 1 1 1 0
1 0 1 1 0 0 0 1 0
1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
于 2013-08-16T07:04:46.133 回答