Antecedentes
¡Ha explotado una bomba atómica cerca de la fábrica de postes de cerca! Dado que las cercas son esenciales para la supervivencia de nuestra civilización, debemos rescatar a la mayor cantidad posible. Estamos enviando robots resistentes a la radiación para buscar en el área, y es su tarea programar su visión artificial.
Entrada
Su entrada es una cuadrícula rectangular de los caracteres |-#
, que representa dos tipos de piezas de poste de cerca y escombros, dados como una cadena delimitada por una nueva línea. Los postes de la cerca han sido horriblemente mutilados por la explosión, y algunos incluso han sido fusionados por el calor. Definimos un poste de cerca candidato como un patrón horizontal que comienza y termina |
y tiene uno o más -
s entre ellos (como |-|
o |---|
no ||
), o un patrón vertical que comienza y termina -
y tiene uno o más |
s entre ellos (esencialmente un poste de cerca candidato horizontal rotó 90 grados). Un poste de cerca real es un poste de cerca candidato que no comparte ninguna de sus partes con otro poste de cerca candidato.
Salida
Su salida es el número de postes de cerca reales en la cuadrícula de entrada.
Ejemplo
Considere la cuadrícula de entrada
|#|-|#|##
#||--|||#
###|#|--#
###-||--|
-#-|#-|#-
#---#-#-|
#-#-|#--|
Hay 5 cercas candidatas en esta cuadrícula, pero solo 2 de ellas son cercas reales (en negrita). Por lo tanto, la salida correcta es 2
.
Reglas
Puede escribir un programa completo o una función. El conteo de bytes más bajo gana, y las lagunas estándar no se permiten.
Casos de prueba adicionales
Entrada:
##--
||##
-#|-
|#|#
Salida: 0
(0 candidatos de cercas)
Entrada:
-##|-##--
#|#-|#||-
--|-#|#||
##||||-##
||#|--|-|
-#|-#--|#
|####|#-#
Salida: 0
(5 postes de cerca candidatos)
Entrada:
#|--|---|-|#
####|##--||-
-|-##||#|---
-#|#-|-#-|||
#|-##--###|-
---#-||-#-##
#|---|###|-#
-|---#-#|#|#
|#--|####-|-
Salida: 4
(8 postes de cerca candidatos)
Entrada:
-|-||---##|#
---|######-#
####-##|#--|
|||##|#-||||
####-#-||-#|
---#--|#-#--
-|#-####-##-
#||-|-|-###|
|-##||-||-#-
Salida: 5
(7 postes de cerca candidatos)
Entrada:
|#-|#|#-###|#-#
----#####|#----
|#--#-##-#|##-|
|#-|#-|--##||--
||#-#---##|||##
#|#-|||-#-#--||
--#|-||#|--|#|#
-#-|###||-#--#|
-#||-|#-##||##|
|--|-|||-##|-#|
Salida: 4
(9 cercas candidatas)
Entrada:
||-|-|-##-#-#-|#--#-
-##|-#|-#-##-|#|--|-
||#---###||-|#|##|-#
#||-#-#-|---|#||#|##
-#-###-##-|-#-|-#||#
##-#--#||-----||-|##
-|--#-#-#|---#-#|#-#
###|-|#-#|-|###|#-|#
#||#-#|--|-||#------
||##|-||#-|--#|#-#-#
|#-|-#-|-|--##-#|||#
-|#--#||##---##|-##-
#|-|-|-||-||#-#-|##-
|-#|##|-|#|#|--||#--
Salida: 9
(30 postes de cerca candidatos)
|--...--|
comodines de patrón? ¿Eso significa que las cercas horizontales deben tener al menos 5 guiones? Estoy un poco confundido por la notación.[[-,|,-],[#,#,-],[-,-,|]]
?Respuestas:
Rubí, 266
268bytesPara comenzar esto. Aprovecha el hecho de que las variables apuntan a objetos (una cadena de 1 carácter para cada elemento de la matriz 2D) para eliminar los candidatos superpuestos.
P.ej. si ejecuta
a="s";b=a
, ambosa
yb
apuntan a la misma cadena."test"=="test"
devuelve verdadero, pero"test".equal?("test")
devuelve falso, porque hemos creado dos objetos String diferentes.Casos de prueba en ideona .
fuente
map
lugar deeach