Este é um desafio adicional ao desafio de gerar quebra-cabeças Loopy . Você pode resolver esse desafio antes de tentar o desafio mais difícil no link anterior.
O objetivo deste desafio é validar a solução para um quebra-cabeça maluco. Por favor, pegue toda a documentação sobre o que é um quebra-cabeça maluco no link anterior. Um quebra-cabeça em loop resolvido é formatado de maneira muito semelhante à saída de um envio válido para o desafio "gerar quebra-cabeças em loop" e pode ser assim:
+-+-+ +-+ +-+ +
| | | |2|3|
+-+ + + + + +-+
2| | | |2| 3|
+ + +-+ + + +-+
2| 2 1|3| |
+-+ +-+ +-+ +-+
|2 | | 1 2|
+ +-+ +-+ +-+ +
| |2 1 2|3|3| |
+ + +-+ +-+ +-+
| | |3|2 1
+ +-+ +-+-+-+-+
| 2 2 |
+-+-+-+-+-+-+-+
O caminho que compõe a solução é marcado com |e -caracteres entre os +caracteres.
Especificação de entrada
Seu programa receberá um quebra-cabeça em loop com uma solução formatada como o exemplo acima como entrada. Seu programa deve inferir o tamanho do quebra-cabeça a partir da entrada. Você pode fazer as seguintes suposições sobre a entrada:
- O quebra-cabeça tem nada menos que 2 e não mais que 99 células em qualquer direção
- Assim, cada linha tem um comprimento máximo de 199 caracteres, sem incluir o (s) caractere (s) de nova linha
- Assim, a entrada contém um máximo de 99 linhas
- cada linha pode terminar após o último caractere imprimível ou ser preenchida com caracteres de espaço em branco, para ter um comprimento de até 2 · y + 1 caracteres, em que y é o número de células na direção horizontal
- cada posição com as coordenadas x e y ainda contém um
+caractere - as posições horizontal ou verticalmente adjacentes às posições que contêm
+caracteres contêm um caractere de espaço em branco, estão atrás do final da linha ou contêm um-caractere se horizontalmente adjacente ou um|caractere se verticalmente adjacente - todas as outras posições são ou por trás da extremidade da linha ou conter um dos caracteres
,0,1,2, ou3 - todas as linhas são finalizadas com o (s) caractere (s) de nova linha padrão da sua plataforma
- existe exatamente uma nova linha à direita
A entrada deve ser recebida de uma das seguintes maneiras:
- Da entrada padrão
- Como o valor de um parâmetro nomeado
pem uma solicitação HTTP POST - Como o conteúdo de um formulário HTML
- Como o conteúdo de um arquivo nomeado
pem um diretório definido pela implementação - De uma maneira definida por implementação em tempo de execução, se os quatro primeiros não estiverem disponíveis
- Codificado se o seu idioma não fornecer meios de receber entrada
Especificação de saída
Seu programa será finalizado para todas as entradas correspondentes à especificação de entrada e calculará se a solução para o quebra-cabeça está correta. Seu programa deve gerar o resultado da computação como um valor booleano de uma das seguintes maneiras:
- Como um status de saída igual a zero (a solução é válida) ou diferente de zero (a solução é inválida)
- Como o caractere
y(solução é válida) oun(solução é inválida) seguido por zero ou mais caracteres arbitrários emitidos de uma maneira definida pela implementação
O comportamento do seu programa não é especificado ao encontrar entrada não formatada de acordo com a especificação de entrada.
Pontuação
A pontuação do seu programa é o número de caracteres em sua origem, exceto caracteres em branco omitíveis e comentários omitíveis. Você é incentivado a recuar seu envio, para que seja mais fácil ler para os outros e comentar sua solução, para que seja mais fácil seguir.
Os envios que não seguem a especificação de entrada ou saída ou geram resultados incorretos são inválidos.
0- cabeças também é um número válido para uma célula.