在Terraria游戏中,游戏机制之一是建造房屋,以便NPC可以进入。有一套严格的规则来确定什么是有效房屋。以下是规则列表:
房屋的总面积必须至少为60平方米,但少于750平方米。此外,房屋的尺寸(包括外框)必须至少为以下尺寸之一:
5x12 6x10 7x9 8x8 9x7 10x6 12x5 15x4
为简单起见,您可以放心地假设:a)所有输入房屋将为矩形,并且b)房屋内将没有实心砖
#
。这是我们的12x6帧(以漂亮的ASCII绘制):############ # # # # # # # # ############
房子必须被背景墙覆盖。这些不是实心砖,而是三维空间中房子后面的墙。允许有孔,但任何孔都不能大于4x4。如果一行或一列中有5个或更多的空格字符,则该孔大于4x4,并且该房屋无效。也可以有多个孔,但必须至少有一个壁。
############ #**********# #**********# #**********# #**********# ############ ############ #* * # #* * # #* * # #****** # ############ (Still acceptable since neither hole is larger than 4x4 and there is a separator) ############ # ******# #*** ***# # ******# #*** ***# ############ (Also still valid. No row or column of blank spaces is longer or taller than 4.)
必须有一个入口。这可以是
|
侧面的门,也可以是-
地板或天花板上的平台。如果唯一的入口在拐角处,则NPC无法进入。另外,如果您有一个平台作为地板,则必须至少有一个单独的实体块才能使NPC站立。该实体块不能直接邻近左侧或右侧的侧壁。这些都是带入口的有效房屋:############ #**********# |**********# #**********# #**********| ############ (Multiple doors, or doors up high are okay) ############ #**********# #**********# #**********# #**********# #######----# #----####### #**********# #**********# #**********# #**********# ############
必须至少有一个光源
$
,桌子T
和椅子C
,但允许更多。光源可以在空中或在地面上,但是桌子和椅子都必须在地面上,例如在最下面的一排。############ #**********# #**********# #***$******| #****TC****| ############
另外,您可以假设任何家具后面都有墙,因此手电筒,椅子或桌子可以视为两个孔之间的分隔物。
############ #* * # #* * # #* $ # #**TC******| ############
挑战
您必须编写最短的函数,该函数将房屋作为ASCII字符串,并返回true / false(无论它是否为有效房屋)。您可以将其作为换行符分隔的字符串,字符串列表或任何其他方式(只要合理)。为了我的缘故,请包括一个简短的程序,以便我可以测试它是否正确运行。
作为参考,这些都是无效的输入:
############
-**********#
-****$*****#
-**********#
-******TC**#
############ (You can't have platforms on the sidewalls)
###########-
#**********#
#**********#
#****$*****#
#**T***C***#
###########| (NPC can't enter because the only entrances are on the corner)
############
#**********#
#******$***#
#**********#
#T****C****#
##--------## (NPC has nowhere to stand)
############
#**********#
#**********#
#**********#
#**$**TC***#
##########|# (Door cannot be in the floor or ceiling)
############
#**********#
#**********#
#**********#
|** T C #
############ (Since table and chair do not count as a background wall, the hole in background is too wide)
####### ####
#**********#
#**********#
#****$*****#
#**T***C***|
############ (There's a hole in the frame.)
###########################################################################
# #
# #
# #
# #
# #
# #
# #
# #
# #
########################################################################### (House is 75x11, which is too big.)
排行榜
#
。2.正如马丁所问,“ 没有孔可以大于4x4 ”是什么意思?(还请注意,直到我的第3遍通读本,我才确定了解漏洞是什么。您应该为未玩过游戏的人编写规范。)
*
,但这将排除给定有效门示例。4.“ 在地面上 ”是指“倒数第二排”还是“上方#
”?5.“ 这不适用于桌子和椅子。 ”这是否意味着4x4的孔在其正下方T
或C
正上方太大?6.“ NPC无法进入,因为只有入口在拐角处 ”我不认为规范对拐角处有任何规定。可能是-
,|
如果还有其他门?
*
入口都必须可从入口到达?还是*
在孔的中间隔离开来,将整个房间一分为二的孔,仅一侧允许入口,而直接进入孔的入口被隔离?