У грі Terraria одна з ігрових механіків передбачає будівництво будинків, щоб NPC міг переїхати. Існує суворий набір правил щодо того, що вважається дійсним будинком чи ні. Ось перелік правил:
Загальна площа будинку повинна бути не менше 60 квадратних плиток, але менше 750. Також розмір будинку, включаючи зовнішній каркас, повинен бути хоча б одним із таких:
5x12 6x10 7x9 8x8 9x7 10x6 12x5 15x4
для простоти можна сміливо припускати, що: а) всі будинки, що вводяться, будуть прямокутниками; б) жодна суцільна плитка
#
не буде всередині будинку. Ось наш кадр розміром 12x6 (намальований красивим ASCII):############ # # # # # # # # ############
Будинок повинен бути покритий фоновими стінами. Це не суцільна плитка, а швидше стіна за будинком у третьому вимірі. Допускаються отвори, але жодні отвори не можуть бути більше 4х4. Якщо в рядку є рядок або стовпець із 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. За запитанням Мартіна, що саме означає " жоден отвір не може бути більше 4х4 "? (Зауважте також, що до мого третього читання я не був впевнений, що я розумію, що це за діра. Ви повинні написати специфікацію для людей, які не грали в цю гру).
*
, але це виключало б наведені приклади дійсних дверей. 4. Чи означає " на землі " "в передостанньому ряду" чи "над а #
"? 5. " Це не стосується столу та стільців ". Так це означає, що отвір 4x4 з a T
або C
безпосередньо під ним занадто великий? 6. " NPC не може зайти, тому що єдині входи є на розі ". Я не думаю, що спецслужба сказала нічого про кути. Вони можуть бути -
або |
якщо є інші двері?
*
має бути доступний до входу? Або *
в середині отвори дозволені отвори, отвори, які розрізають всю кімнату надвоє, лише одна сторона має вхід, а входи, які прямують в отвір, дозволені?