Chris, um viciado em palavras cruzadas, tem um algoritmo definido para a ordem em que ele os resolve.
Usaremos a imagem acima como guia.
- Chris sempre começa com a primeira pista, neste caso 1 Across. Como Chris é um entusiasta capaz de palavras cruzadas, presume-se que ele sempre saiba a resposta para a pista em que está trabalhando.
- Depois que Chris concluir uma pista, ele verificará todas as pistas adjacentes às que ele completou (no primeiro caso, 1 Down, 2 Down e 3 Down) e depois completará a pista com o número mais baixo. Se não houver pistas adjacentes, ele passaria para a etapa 3.
- Se a pista for tal que o próximo número (conforme descrito na Etapa 3) tenha uma pista transversal e uma pista descendente, ele completará a pista transversal primeiro (100% de certeza, isso faz fronteira com o TOC!)
- Se não houver pistas adjacentes, ele passará para a próxima pista disponível que será a próxima em número (do outro lado ou do baixo)
- Repita da Etapa 2 até que todas as pistas sejam concluídas.
E é aqui que tudo se resume a você, queridos programadores. Você foi encarregado de criar um código que, ao receber um modelo de palavras cruzadas, forneça uma saída descrevendo a ordem das pistas com base no algoritmo de Chris para resolvê-lo.
O código aceitará a entrada de um modelo de palavras cruzadas, na forma de um .
quadrado branco e de um #
quadrado preto.
Exemplo :
.....#.........
.#.#.#.#.#.#.#.
...#...#.......
.#.#.#.#.#.#.#.
....#..........
##.#.#.#.#.#.#.
......#........
.###.#####.###.
........#......
.#.#.#.#.#.#.##
..........#....
.#.#.#.#.#.#.#.
.......#...#...
.#.#.#.#.#.#.#.
.........#.....
A entrada pode ser feita através de: a) um arquivo lido da representação das palavras cruzadas, ou b) pela entrada de linha de cada linha das palavras cruzadas, seguida por \n
, com um segundo \n
indicando EOF.
E então determinará o método pelo qual Chris o resolveria de acordo com o algoritmo acima descrito.
A saída deve estar no formato de uma série de instruções separadas por vírgula, na forma de n(A|D)
, onde n
é o número da pista seguido por A
para todo ou D
para baixo.
Portanto, no exemplo acima (ambos da imagem e do modelo de exemplo, que são o mesmo), a saída seria:
1A,1D,2D,3D,9A,10A,4D,5D,6D,7D,8D,11A,12A,13A,15A,14D,15D,16A,17A,18D,19D,20A,21D,23A,22D,24A,25D,27A,28A,26D,29A,30A,31A
O menor código vence ...
Teste
Você deve fornecer com seu envio o código, uma contagem de bytes, além de um dos quatro casos de teste representados no formato .
e #
, assim como a saída gerada a partir dessa entrada. Existem quatro casos de teste, os três abaixo e o modelo de exemplo acima.
Exemplos de casos de teste:
Caso de teste 1
.....#
.#.#.#
...#..
.#.#.#
.....#
##.#..
Resultado: 1A,1D,2D,3D,4A,5A,6A,7A
Caso de teste 2
.....#..
.#.##..#
.#....#.
...##.#.
.####...
......##
Resultado: 1A,1D,2D,5A,4D,4A,3D,3A,7A,8A,6D,9A
Caso de teste 3
.........#
#.#.#.#.#.
....#...#.
#...#.#.#.
..###.#.#.
.#....#...
.#####...#
.....###..
Resultado: 1A,2D,3D,4D,5D,7A,8A,9A,10A,11A,11D,12A,13A,6D,14D,15A,16A,17A
Caso de teste 4
.....#.........
.#.#.#.#.#.#.#.
...#...#.......
.#.#.#.#.#.#.#.
....#..........
##.#.#.#.#.#.#.
......#........
.###.#####.###.
........#......
.#.#.#.#.#.#.##
..........#....
.#.#.#.#.#.#.#.
.......#...#...
.#.#.#.#.#.#.#.
.........#.....
Resultado: 1A,1D,2D,3D,9A,10A,4D,4A,5D,6D,7D,8D,11A,12A,13A,15A,14D,15D,16A,17A,18D,19D,20A,21D,23A,22D,24A,25D,27A,28A,26D,29A,30A,31A
Boa sorte!
17A
no final. Também o quarto 4A
depois 4D
.