发布
社区首页 >问答首页 >网格中有多少个矩形?

网格中有多少个矩形?
EN

Code Golf用户
提问于 2016-08-01 05:28:19
回答 16查看 4.7K关注 0票数 29

嗯,虽然这个挑战是一个巨大的成功,但它也是非常琐碎的解决。因此,对于那些寻找更多挑战的人,我创建了这个挑战的续集,您现在必须计算唯一矩形的数量。看看这个!现在,对于那些想要解决这个挑战的人来说,它来了。

好吧,我们还没有这样的挑战,所以我们开始吧。

考虑一下这个矩形的3 x 3网格:

有几个长方形?嗯,从视觉上看,我们可以看到实际上有一些36矩形,包括整个平面本身,它们都显示在下面的动画GIF中:

任务

如上面所示,矩形的计数就是任务。换句话说,给定两个大于或等于0mn的整数,其中m表示宽度,n表示高度,输出矩形在m x n网格中的矩形总数。

规则

  • 任何直接解决这个问题的内置程序都被明确禁止使用。
  • 这个挑战不是寻找最短的答案,而是在每一种语言中找到最短的答案。因此,不会接受任何答复。
  • 标准漏洞是禁止的。

测试用例

Array of Integers Input -> Integer Output格式表示:

代码语言:javascript
代码运行次数:0
复制
[0,0] -> 0
[1,1] -> 1
[3,3] -> 36 (Visualized above)
[4,4] -> 100
[6,7] -> 588

参考资料

记住,这是密码-高尔夫,所以最短的代码赢了!

EN

回答 16

Code Golf用户

发布于 2016-08-01 05:36:46

Python,22字节

代码语言:javascript
代码运行次数:0
复制
lambda m,n:m*~m*n*~n/4

公式m*n*(m+1)*(n+1)/4采用比特补码~m=-(m+1)缩短,(m+1)*(n+1)表示为~m*~n.

为什么矩形的数量是m*n*(m+1)*(n+1)/4?每个矩形通过选择两条水平线(顶部和底部)和两条垂直线(左和右)来指定。有m+1水平线,其中我们选择两个不同的子集。所以选择的数量是choose(m+1,2),也就是m*(m+1)/2。将垂直行的n*(n+1)/2选项乘以所得结果。

票数 34
EN

Code Golf用户

发布于 2016-08-01 05:30:23

果冻,4 字节数

代码语言:javascript
代码运行次数:0
复制
RS€P

在网上试试!

,也可以是4字节

代码语言:javascript
代码运行次数:0
复制
pP€S

在网上试试!

票数 11
EN

Code Golf用户

发布于 2016-08-01 05:41:29

Javascript (ES6),17字节

代码语言:javascript
代码运行次数:0
复制
m=>n=>m*n*~m*~n/4

这个答案的叉子。

代码语言:javascript
代码运行次数:0
复制
f=m=>n=>m*n*~m*~n/4
alert(f(prompt())(prompt()))
票数 9
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/87189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档