Trong trò chơi Terraria , một trong những cơ chế trò chơi liên quan đến việc xây dựng nhà để NPC có thể chuyển đến. Có một bộ quy tắc nghiêm ngặt cho những gì được coi là một ngôi nhà hợp lệ hay không. Dưới đây là danh sách các quy tắc:
Tổng diện tích trong nhà phải có ít nhất 60 ô vuông, nhưng nhỏ hơn 750. Ngoài ra, kích thước của ngôi nhà bao gồm khung bên ngoài phải có ít nhất một trong số này:
5x12 6x10 7x9 8x8 9x7 10x6 12x5 15x4
vì đơn giản, bạn có thể giả định một cách an toàn rằng: a) Tất cả các ngôi nhà đầu vào sẽ là hình chữ nhật và b) không có gạch đặc
#
sẽ ở bên trong ngôi nhà. Đây là khung 12x6 của chúng tôi (được vẽ bằng ASCII tuyệt đẹp):############ # # # # # # # # ############
Ngôi nhà phải được bao phủ trong các bức tường nền. Đây không phải là gạch đặc, mà là một bức tường phía sau ngôi nhà ở chiều thứ ba. Lỗ được phép, nhưng không có lỗ nào có thể lớn hơn 4 x 4. Nếu có một hàng hoặc cột gồm 5 hoặc nhiều ký tự khoảng trắng trong một hàng, thì đây là một lỗ lớn hơn 4 x 4 và ngôi nhà không hợp lệ. Nhiều lỗ cũng được cho phép, nhưng phải có ít nhất một bức tường cách nhau.
############ #**********# #**********# #**********# #**********# ############ ############ #* * # #* * # #* * # #****** # ############ (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.)
Phải có một lối vào. Đây có thể là một cánh cửa
|
ở hai bên hoặc một nền tảng-
trên sàn hoặc trần nhà. Nếu lối vào duy nhất nằm ở một góc, NPC không thể vào được. Ngoài ra, nếu bạn có một nền tảng là sàn, bạn phải có ít nhất một khối vững chắc duy nhất để NPC đứng vững. Khối rắn này không thể tiếp giáp trực tiếp với các bức tường bên trái hoặc bên phải. Đây là tất cả các ngôi nhà hợp lệ với lối vào:############ #**********# |**********# #**********# #**********| ############ (Multiple doors, or doors up high are okay) ############ #**********# #**********# #**********# #**********# #######----# #----####### #**********# #**********# #**********# #**********# ############
Phải có ít nhất một nguồn sáng
$
, bànT
và ghếC
, mặc dù nhiều hơn được cho phép. Nguồn sáng có thể ở trên không hoặc trên mặt đất, nhưng cả bàn và ghế đều phải ở trên mặt đất, ví dụ như ở hàng thấp nhất.############ #**********# #**********# #***$******| #****TC****| ############
Ngoài ra, bạn có thể giả định rằng có một bức tường đằng sau bất kỳ đồ nội thất nào, vì vậy một ngọn đuốc, ghế hoặc bàn có thể được tính là một dải phân cách giữa hai lỗ.
############ #* * # #* * # #* $ # #**TC******| ############
Các thách thức
Bạn phải viết hàm ngắn nhất lấy một ngôi nhà dưới dạng chuỗi ASCII và trả về true / false cho dù đó có phải là nhà ở hợp lệ hay không. Bạn có thể coi đây là một chuỗi phân cách dòng mới, một danh sách các chuỗi hoặc bất kỳ cách nào miễn là hợp lý. Vì lợi ích của tôi, vui lòng bao gồm một chương trình ngắn để tôi có thể kiểm tra xem nó có hoạt động tốt hay không.
Để tham khảo, đây là tất cả các đầu vào không hợp lệ:
############
-**********#
-****$*****#
-**********#
-******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.)
Bảng xếp hạng
#
. 2. Như Martin đã hỏi, chính xác thì " không có lỗ nào có thể lớn hơn 4 x 4 " nghĩa là gì? (Cũng lưu ý rằng phải đến lần đọc thứ ba, tôi mới chắc chắn hiểu được lỗ hổng là gì. Bạn nên viết thông số kỹ thuật cho những người chưa chơi trò chơi).
*
, nhưng điều đó sẽ loại trừ các ví dụ đã cho về các cửa hợp lệ. 4. " Trên mặt đất " có nghĩa là "trong hàng áp chót" hay "trên một #
"? 5. " Điều này không áp dụng cho bàn và ghế. " Vậy điều đó có nghĩa là một lỗ 4 x 4 có T
hoặc C
trực tiếp bên dưới nó quá lớn? 6. " NPC không thể vào vì các lối vào duy nhất nằm ở góc " Tôi không nghĩ thông số kỹ thuật nói bất cứ điều gì về các góc. Họ có thể -
hoặc |
nếu có những cánh cửa khác?
*
lối vào phải có thể truy cập từ một lối vào? Hoặc bị cô lập *
ở giữa các lỗ được phép, các lỗ cắt toàn bộ căn phòng thành hai chỉ có một bên có lối vào được phép và lối vào trực tiếp vào lỗ được phép?