Considere a seguinte grade padrão de palavras cruzadas 15 × 15 .
Podemos representar isso na arte ASCII usando #
blocos e (espaço) quadrados brancos.
# #
# #
#
# #
### ## ##
## #
# #
# ##
## ## ###
# #
#
# #
# #
Dada uma grade de palavras cruzadas no formato de arte ASCII acima, determine quantas palavras ela contém. (A grade acima tem 78 palavras. É o quebra - cabeça do New York Times da última segunda-feira .)
Uma palavra é um grupo de dois ou mais espaços consecutivos em execução na vertical ou na horizontal. Uma palavra começa e termina com um bloco ou a borda da grade e sempre corre de cima para baixo ou da esquerda para a direita, nunca na diagonal ou para trás. Observe que as palavras podem abranger toda a largura do quebra-cabeça, como na sexta linha do quebra-cabeça acima. Uma palavra não precisa estar conectada a outra palavra.
Detalhes
- A entrada sempre será um retângulo contendo os caracteres
#
ou(espaço), com linhas separadas por uma nova linha (
\n
). Você pode assumir que a grade é composta por 2 caracteres ASCII imprimíveis distintos em vez de#
e.
- Você pode assumir que há uma nova linha à direita opcional. Os caracteres de espaço à direita contam, pois afetam o número de palavras.
- A grade nem sempre será simétrica e pode ser todos os espaços ou todos os blocos.
- Teoricamente, seu programa deve funcionar em uma grade de qualquer tamanho, mas para esse desafio nunca será maior que 21 × 21.
- Você pode considerar a grade como entrada ou o nome de um arquivo que contém a grade.
- Pegue a entrada dos argumentos stdin ou da linha de comando e envie para stdout.
- Se preferir, você pode usar uma função nomeada em vez de um programa, tomando a grade como argumento de string e produzindo um número inteiro ou string via stdout ou retorno de função.
Casos de teste
Entrada:
# # #
Saída:
7
(Existem quatro espaços antes de cada um#
. O resultado seria o mesmo se cada sinal numérico fosse removido, mas o Markdown removeria espaços de outras linhas vazias.)Entrada:
## # ##
Saída:
0
(palavras de uma letra não contam.)Entrada:
###### # # #### # ## # # ## # #### #
Resultado:
4
Entrada: ( quebra - cabeça do Sunday NY Times de 10 de maio )
# ## # # # # # # # ### ## # # ## # # # ## # ## # ## # # ### ## # ## ## # ## ### # # ## # ## # ## # # # ## # # ## ### # # # # # # # ## #
Resultado:
140
Pontuação
O menor código em bytes vence. O desempate é o post mais antigo.