Contexte
Une bombe atomique a explosé près de l'usine de clôture! Puisque les poteaux de clôture sont essentiels à la survie de notre civilisation, nous devons en sauver autant que possible. Nous envoyons des robots résistants aux radiations pour fouiller la zone, et c'est votre tâche de programmer leur vision artificielle.
Contribution
Votre entrée est une grille rectangulaire des caractères |-#
, représentant deux types de parties de clôture et de décombres, donnés sous forme de chaîne délimitée par des sauts de ligne. Les poteaux de clôture ont été horriblement mutilés par l'explosion, et certains ont même été fusionnés par la chaleur. Nous définissons un poteau de clôture candidat comme étant soit un motif horizontal qui commence et se termine |
et a un ou plusieurs -
s entre eux (comme |-|
ou |---|
mais pas ||
), ou un motif vertical qui commence et se termine -
et a un ou plusieurs |
s entre eux (essentiellement un poteau de clôture candidat horizontal tourné à 90 degrés). Un poteau de clôture réel est un poteau de clôture candidat qui ne partage aucune de ses parties avec un autre poteau de clôture candidat.
Production
Votre sortie est le nombre de poteaux de clôture réels dans la grille d'entrée.
Exemple
Considérez la grille d'entrée
|#|-|#|##
#||--|||#
###|#|--#
###-||--|
-#-|#-|#-
#---#-#-|
#-#-|#--|
Il y a 5 poteaux de clôture candidats dans cette grille, mais seulement 2 d'entre eux sont des poteaux de clôture réels (indiqués en gras). Ainsi, la sortie correcte est 2
.
Règles
Vous pouvez écrire soit un programme complet soit une fonction. Le nombre d'octets le plus bas gagne et les failles standard sont interdites.
Cas de test supplémentaires
Contribution:
##--
||##
-#|-
|#|#
Sortie: 0
(0 poteaux de clôture candidats)
Contribution:
-##|-##--
#|#-|#||-
--|-#|#||
##||||-##
||#|--|-|
-#|-#--|#
|####|#-#
Sortie: 0
(5 poteaux de clôture candidats)
Contribution:
#|--|---|-|#
####|##--||-
-|-##||#|---
-#|#-|-#-|||
#|-##--###|-
---#-||-#-##
#|---|###|-#
-|---#-#|#|#
|#--|####-|-
Sortie: 4
(8 poteaux de clôture candidats)
Contribution:
-|-||---##|#
---|######-#
####-##|#--|
|||##|#-||||
####-#-||-#|
---#--|#-#--
-|#-####-##-
#||-|-|-###|
|-##||-||-#-
Sortie: 5
(7 poteaux de clôture candidats)
Contribution:
|#-|#|#-###|#-#
----#####|#----
|#--#-##-#|##-|
|#-|#-|--##||--
||#-#---##|||##
#|#-|||-#-#--||
--#|-||#|--|#|#
-#-|###||-#--#|
-#||-|#-##||##|
|--|-|||-##|-#|
Sortie: 4
(9 poteaux de clôture candidats)
Contribution:
||-|-|-##-#-#-|#--#-
-##|-#|-#-##-|#|--|-
||#---###||-|#|##|-#
#||-#-#-|---|#||#|##
-#-###-##-|-#-|-#||#
##-#--#||-----||-|##
-|--#-#-#|---#-#|#-#
###|-|#-#|-|###|#-|#
#||#-#|--|-||#------
||##|-||#-|--#|#-#-#
|#-|-#-|-|--##-#|||#
-|#--#||##---##|-##-
#|-|-|-||-||#-#-|##-
|-#|##|-|#|#|--||#--
Sortie: 9
(30 poteaux de clôture candidats)
|--...--|
caractères génériques? Est-ce à dire que les clôtures horizontales doivent avoir au moins 5 tirets? Je suis un peu confus par la notation.[[-,|,-],[#,#,-],[-,-,|]]
?Réponses:
Rubis, 266
268octetsPour commencer. Utilise le fait que les variables pointent vers des objets (une chaîne de 1 caractère pour chaque élément du tableau 2D) pour éliminer les candidats qui se chevauchent.
Par exemple. si vous exécutez
a="s";b=a
, à la foisa
et leb
point à la même chaîne."test"=="test"
renvoie vrai, mais"test".equal?("test")
renvoie false, car nous avons créé deux objets String différents.Cas de test sur ideone .
la source
map
place deeach