Considere la siguiente cuadrícula estándar de crucigramas de 15 × 15 .
Podemos representar esto en el arte ASCII utilizando #
bloques y (espacio) para cuadrados blancos.
# #
# #
#
# #
### ## ##
## #
# #
# ##
## ## ###
# #
#
# #
# #
Dada una cuadrícula de crucigramas en el formato de arte ASCII anterior, determine cuántas palabras contiene. (La cuadrícula anterior tiene 78 palabras. Resulta ser el rompecabezas del New York Times del lunes pasado ).
Una palabra es un grupo de dos o más espacios consecutivos que se ejecutan vertical u horizontalmente. Una palabra comienza y termina con un bloque o el borde de la cuadrícula y siempre corre de arriba a abajo o de izquierda a derecha, nunca en diagonal o hacia atrás. Tenga en cuenta que las palabras pueden abarcar todo el ancho del rompecabezas, como en la sexta fila del rompecabezas de arriba. Una palabra no tiene que estar conectada a otra palabra.
Detalles
- La entrada siempre será un rectángulo que contenga los caracteres
#
o(espacio), con filas separadas por una nueva línea (
\n
). Puede suponer que la cuadrícula está compuesta de 2 caracteres ASCII imprimibles distintos en lugar de#
y.
- Puede suponer que hay una nueva línea final opcional. Los caracteres de espacio final SÍ cuentan, ya que afectan el número de palabras.
- La cuadrícula no siempre será simétrica, y puede ser todos los espacios o todos los bloques.
- Teóricamente, su programa debería poder trabajar en una cuadrícula de cualquier tamaño, pero para este desafío nunca será mayor que 21 × 21.
- Puede tomar la cuadrícula como entrada o el nombre de un archivo que contiene la cuadrícula.
- Tome la entrada de stdin o los argumentos de línea de comando y la salida a stdout.
- Si lo prefiere, puede usar una función con nombre en lugar de un programa, tomando la cuadrícula como un argumento de cadena y generando un entero o una cadena a través de stdout o retorno de función.
Casos de prueba
Entrada:
# # #
Salida:
7
(Hay cuatro espacios antes de cada uno#
. El resultado sería el mismo si se eliminara cada signo de número, pero Markdown elimina espacios de líneas vacías).Entrada:
## # ##
Salida:
0
(Las palabras de una letra no cuentan).Entrada:
###### # # #### # ## # # ## # #### #
Salida:
4
Entrada: ( rompecabezas del Sunday NY Times del 10 de mayo )
# ## # # # # # # # ### ## # # ## # # # ## # ## # ## # # ### ## # ## ## # ## ### # # ## # ## # ## # # # ## # # ## ### # # # # # # # ## #
Salida:
140
Puntuación
El código más corto en bytes gana. Tiebreaker es la publicación más antigua.