ゲームTerrariaでは、ゲームメカニクスの1つにNPCが入居できるように家を建てることが含まれます。有効な家と見なされるかどうかについての厳しいルールセットがあります。ルールのリストは次のとおりです。
家の総面積は、少なくとも60平方タイルで、750未満でなければなりません。また、外枠を含む家のサイズは、少なくとも次のいずれかでなければなりません。
5x12 6x10 7x9 8x8 9x7 10x6 12x5 15x4
簡単にするために、次のことを安全に想定できます。a)すべての入力家は長方形であり、b)
#
家の中には固体のタイルはありません。こちらが12x6フレームです(美しいASCIIで描かれています):############ # # # # # # # # ############
家は背景の壁で覆われている必要があります。これらは固体のタイルではなく、三次元の家の後ろの壁です。穴は許可されますが、4x4より大きくすることはできません。行に5つ以上のスペース文字の行または列がある場合、これは4x4より大きい穴であり、家は無効です。複数の穴も許可されますが、少なくとも1つの壁が離れている必要があります。
############ #**********# #**********# #**********# #**********# ############ ############ #* * # #* * # #* * # #****** # ############ (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が立つには少なくとも1つのソリッドブロックが必要です。この固体ブロックは、左側または右側の側壁に直接隣接することはできません。これらはすべて、入り口のある有効な家です。############ #**********# |**********# #**********# #**********| ############ (Multiple doors, or doors up high are okay) ############ #**********# #**********# #**********# #**********# #######----# #----####### #**********# #**********# #**********# #**********# ############
少なくとも1つの光源
$
、テーブルT
、椅子が必要ですが、それ以上の光源C
も使用できます。光源は空中または地面に置くことができますが、テーブルと椅子は両方とも地面、例えば最下列になければなりません。############ #**********# #**********# #***$******| #****TC****| ############
また、家具の後ろに壁があると想定できるため、トーチ、椅子、またはテーブルは、2つの穴の間のセパレーターとして数えられます。
############ #* * # #* * # #* $ # #**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. Martinが尋ねたように、「4x4を超える穴はない」とはどういう意味ですか (また、3番目の読み直しまで、穴が何であるかを理解していなかったことに注意してください。ゲームをプレイしていない人のために仕様を書く必要があります)。
*
、有効なドアの特定の例は除外されます。4.「地上」は「最後から2番目の列」または「上」を意味し#
ますか?5.「これはテーブルと椅子には適用されません。」ということは、4x4の穴があるT
か、そのC
すぐ下にあるのは大きすぎるということですか?6.「入り口のみが角にあるため、NPCは入ることができません」仕様では角について何も言わなかったと思います。彼らであってもよい-
か、|
他のドアがある場合は?
*
が入り口から到達可能でなければならないことを意味しますか?または*
、許可された穴の中央、部屋全体を2つに切断する穴、片側のみに入り口が許可されている穴、および直接許可された穴に入る入り口に隔離されていますか?