首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编写一个平方计数程序。

编写一个平方计数程序。
EN

Code Golf用户
提问于 2014-05-21 17:55:17
回答 1查看 516关注 0票数 10

一个众所周知的谜题涉及到,使用3x3网格上的点可以计算出多少个正方形:

代码语言:javascript
复制
.  .  .
.  .  .
.  .  .

答案是6-4个小方格,一个大正方形,一个正方形,由顶部,左,底部和右钉形成,边沿正方形的对角线。

您的任务是构建一个程序,计算可由一组点组成的方格总数。

您的程序将接受两种格式之一的输入(由您选择):

  • MN网格组成的.或。.表示网格上的一个点,该点的正方形可以是一个角,网格上的所有空间都是水平或垂直相隔的一个单元。
  • 一个坐标对的列表,表示一个正方形上的点。

并返回使用所提供的点可以形成的不同平方的数目。您的程序必须为每个可能的输入返回正确的解决方案。

例如,以上面的输入为例,但是中间广场缺少的地方:

代码语言:javascript
复制
...
. .
...

这里只有两个可能的方块(大的和对角的),所以程序应该返回2

在任何语言中这样做的最短代码都是赢家。

EN

回答 1

Code Golf用户

发布于 2014-05-21 19:53:14

Python,95

从stdin获取坐标列表。

代码语言:javascript
复制
l=input();print(sum((c-d+b,d+c-a)in l and(a-d+b,b+c-a)in l for a,b in l for c,d in l)-len(l))/4

解释:

对于每一对点(a,b)(c,d),请检查是否有附加点(c-d+b,d+c-a)(a-d+b,b+c-a)的正方形在列表中。这将每平方计数4次,每点计数一次(当(a,b) = (c,d)时),因此减去点数,除以4,得到正方形的数目。

票数 7
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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