在W×H的数字网格中找到最大的N位数


25

编写一个程序或函数,该程序或函数需要一个正整数N和一个宽度为W,高度为H(也是正整数)的十进制数字网格(0到9)。您可以假设N小于或等于W和H中的较大者。

打印或返回在网格中水平或垂直出现的最大连续N位数字,以正常阅读顺序或相反顺序书写。

  • 不考虑数字的对角线。
  • 网格不环绕,即不具有周期性边界条件。

例如3×3网格

928
313
049

将具有9作为输出为N = 1,94作为输出为N = 2,并且940作为输出为N = 3。

4×3网格

7423
1531
6810

将具有8作为输出为N = 1,86对于N = 2,854对于N = 3,并且7423对于N = 4。

3×3网格

000
010
000

1对于N = 1,10对于N = 2和N = 3 ,将具有输出(010对于N = 3也有效)。

1×1网格

0

0N = 1的输出。

您可以采用任何方便的合理格式输入。例如,网格可以是换行符分隔的数字字符串,多维数组或数字列表列表等。如果输出零是网格的一部分,则允许在输出中使用前导零。

这是,因此以字节为单位的最短代码胜出,但我还将奖励布朗尼点(即更有可能的投票),以表明他们的算法在计算上是有效的。


1
我们可以打印任何前导零吗?
PurkkaKoodari 2015年

@ Pietu1998“如果输出中的零是网格的一部分,则允许在输出中使用零。”
加尔文的爱好2015年

Answers:


0

Pyth,22 19字节

3个字节,感谢Jakube。

seSs.:RQ.n,L_MdCB.z

在线尝试。

如果允许我们打印前导零,则代码为18个字节:

eSs.:RQ.n,L_MdCB.z

可以使用来将前导零的字符串转换为整数s
雅库布2015年

9

CJam,39 36 35 34字节

qN/)i\[{zW%_}4*]ff{_,@e<ew:i}e_:e>

很快,@ Dennis醒来:P

在线尝试

说明

基本算法是对网格进行所有四个旋转,并将每一行拆分成一定长度的块N(或行长度,以较小者为准)。然后将大块转换为整数并取最大的整数。

qN/             Split input by newlines, giving an array of lines
)i\             Drop N from the array and put at bottom
[        ]      Wrap in array...
 {    }4*         Perform 4 times...
  zW%_              Rotate grid anticlockwise and push a copy
                Note that this gives an array of 5 grids [CCW1 CCW2 CCW3 CCW4 CCW4]
ff{         }   For each grid row, mapping with N as an extra parameter...
   _,             Push length of row
     @e<          Take min with N
        ew        Split into chunks
          :i      Convert to ints
e_              Flatten that array
:e>             Take cumulative max

出于好奇,few有什么特别的地方吗?还是三个单独的命令?
ETHproductions

3
@ETHproductions实际上是ew使用f或“带有附加参数的映射” 应用的运算符。例如,["abcd" "efgh"] 2 few结果为[["ab" "bc" "cd"] ["ef" "fg" "gh"]]
Sp3000

不过,这是一个有趣的巧合。
ETHproductions

唯一的问题是,当@Dennis醒来时,其他所有人还是会迷路。;)
kirbyfan64sos 2015年

-2

滑稽的

尚无最终答案,但可能会像这样工作:

blsq ) "7423\n1531\n6810"ln)XXJ)\[jtp)\[_+J)<-_+{3.+ti}m[>]
854
blsq ) "7423\n1531\n6810"ln)XXJ)\[jtp)\[_+J)<-_+{4.+ti}m[>]
7423

N和网格如何精确给出?


人们通常应该等待发布答案,直到它起作用。关于OP的任何问题都应在帖子中以评论的形式给出。
Alex A.

该代码实际上有效。
mroman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.