你最近在一家相当好的软件公司接受了一份工作。你对办公室的规模很满意,但你有最大的办公室吗?当你路过的时候,只是盯着你同事的办公室就很难分辨了。唯一的办法就是检查建筑的蓝图.
编写一个程序、脚本或功能,为您的建筑提供一个平面图,并指示您的办公室是否是最大的。这平面图很容易看,因为这座建筑是n乘n正方形的。
输入将由n+1 \n-delimited行组成。第一行将有编号n在上面。接下来的n条线将是这座建筑的平面图。一个简单的示例输入:
6
......
. . .
.X . .
. . .
. . .
......该楼面计划的规则如下:
. (ASCII 46)将用于表示墙壁。(空间ASCII 32)将用于表示开放空间。X (ASCII 88)表示的。你在你的办公室。.s,这也意味着每一条布局线的第一行和最后一个字符都是.s。无论你的办公室是否严格地比其他所有的办公室都大,你都应该输出。输出可以是在所选择的编程语言中明确表示真假的任何内容,并遵循零、空和空表示False的标准约定。这意味着你的办公室绝对是最大的。
上述输入的样本输出:
1因为你的办公室是8平方英尺,而另外一个办公室是4平方英尺。
或
10
..........
. . . .
. . . .
. . . .
. .. . .
.. .
..........
. X .
. .
..........这里有三个办公室,你的南方办公室是长方形的,西北的办公室是一个三角形(Ish),东北的办公室是奇怪的畸形,但比你的办公室还要大。输出应该是假的。
这是一个挑战,写最短的代码,快乐的密码-高尔夫!
发布于 2014-10-24 12:23:27
r=range;h=input();m="".join(raw_input()for x in r(h))
w=len(m)/h;n=0;f=[x!='.'for x in m]
for i in r(w*h):
if f[i]:
a=[i];M=s=0
while a:
i=a.pop();s+=1;M|=m[i]=='X';f[i]=0
for j in(i-1,i+1,i-w,i+w):a+=[[],[j]][f[j]]
n=max(s,n)
if M:A=s
print A==n使用stdin作为输入
注意:首先,if是由单个空格缩进的,其他缩进行要么使用单个制表符字符,要么使用制表符和空格。
https://codegolf.stackexchange.com/questions/32015
复制相似问题