Nel gioco Terraria , una delle meccaniche di gioco prevede la costruzione di case in modo che un NPC possa spostarsi. Esiste una rigida serie di regole per ciò che conta o meno come casa valida. Ecco l'elenco delle regole:
L'area totale della casa deve essere di almeno 60 piastrelle quadrate, ma inferiore a 750. Inoltre, le dimensioni della casa, incluso il telaio esterno, devono essere almeno una di queste:
5x12 6x10 7x9 8x8 9x7 10x6 12x5 15x4
per semplicità, puoi tranquillamente supporre che: a) Tutte le case di input saranno rettangolari eb) nessuna piastrella solida
#
sarà all'interno della casa. Ecco la nostra cornice 12x6 (disegnata nella bellissima ASCII):############ # # # # # # # # ############
La casa deve essere coperta da pareti di fondo. Queste non sono piastrelle solide, ma piuttosto un muro dietro la casa nella terza dimensione. I fori sono consentiti, ma nessun foro può essere più grande di 4x4. Se c'è una riga o una colonna di 5 o più caratteri di spazio in una riga, questo è un buco più grande di 4x4 e la casa non è valida. Sono ammessi anche più fori, ma deve esserci almeno una parete a parte.
############ #**********# #**********# #**********# #**********# ############ ############ #* * # #* * # #* * # #****** # ############ (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.)
Ci deve essere un ingresso. Questa può essere una porta
|
ai lati o una piattaforma-
sul pavimento o sul soffitto. Se l'unico ingresso è in un angolo, l'NPC non è in grado di entrare. Inoltre, se si dispone di una piattaforma come pavimento, è necessario disporre di almeno un singolo blocco solido affinché l'NPC sia in piedi. Questo blocco solido non può essere direttamente adiacente alle pareti laterali a sinistra o a destra. Queste sono tutte case valide con ingressi:############ #**********# |**********# #**********# #**********| ############ (Multiple doors, or doors up high are okay) ############ #**********# #**********# #**********# #**********# #######----# #----####### #**********# #**********# #**********# #**********# ############
Ci deve essere almeno una fonte di luce
$
, tavoloT
e sediaC
, anche se è permesso di più. La sorgente luminosa può essere in aria o a terra, ma sia il tavolo che la sedia devono trovarsi a terra, ad es. Nella fila più bassa.############ #**********# #**********# #***$******| #****TC****| ############
Inoltre, puoi presumere che ci sia un muro dietro qualsiasi mobile, quindi una torcia, una sedia o un tavolo possono contare come un separatore tra due fori.
############ #* * # #* * # #* $ # #**TC******| ############
La sfida
È necessario scrivere la funzione più breve che accetta una casa come stringa ASCII e restituisce true / false indipendentemente dal fatto che sia valida o meno. Puoi prenderlo come una stringa delimitata da nuova riga, un elenco di stringhe o in qualsiasi altro modo purché sia ragionevole. Per amor mio, ti preghiamo di includere un breve programma in modo da poter verificare se funziona bene o no.
Per riferimento, questi sono tutti input non validi:
############
-**********#
-****$*****#
-**********#
-******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.)
Classifica
#
. 2. Come ha chiesto Martin, cosa significa esattamente " nessun foro può essere più grande di 4x4 "? (Nota anche che non è stato fino al mio terzo read-through che ero certo di capire quale fosse il buco. Dovresti scrivere le specifiche per le persone che non hanno giocato al gioco).
*
, ma ciò escluderebbe gli esempi forniti di porte valide. 4. " a terra " significa "nella penultima fila" o "sopra a #
"? 5. " Questo non vale per tavolo e sedie. " Quindi significa che un buco 4x4 con una T
o C
direttamente sotto di esso è troppo grande? 6. "L' NPC non può entrare perché gli unici ingressi sono all'angolo " Non credo che le specifiche abbiano detto nulla sugli angoli. Possono essere -
o |
se ci sono altre porte?
*
deve essere raggiungibile da un ingresso? O sono *
consentiti gli isolamenti nel mezzo dei fori, i fori che tagliano l'intera stanza in due con un solo lato a cui è consentito un ingresso e gli ingressi che vanno direttamente in un foro?