Chris, un addict cryptique des mots croisés, a un algorithme défini pour l'ordre dans lequel il les résout.
Nous utiliserons l'image ci-dessus comme guide.
- Chris commence toujours par le premier indice transversal, dans ce cas 1 Across. Chris est un passionné de mots croisés, donc on suppose qu'il connaîtra toujours la réponse à l'indice sur lequel il travaille.
- Une fois que Chris aura terminé un indice, il vérifiera tous les indices adjacents à ceux qu'il a complétés (dans le premier cas, 1 Down, 2 Down et 3 Down) puis complétera l'indice avec le nombre le plus bas. S'il n'y a pas d'indices adjacents, il passerait à l'étape 3.
- Si l'indice est tel que le numéro suivant (comme décrit à l'étape 3) a à la fois un indice transversal et un indice négatif, il remplira d'abord l'indice transversal (100% de certitude, cela frise le TOC!)
- S'il n'y a pas d'indices adjacents, il ira au prochain indice disponible qui est le suivant en nombre (en travers ou en bas)
- Répétez à partir de l'étape 2 jusqu'à ce que tous les indices soient terminés.
Et c'est là que cela vous revient, chers codeurs. Vous avez été chargé de créer du code qui peut, après avoir été fourni avec un modèle de mots croisés, fournir une sortie décrivant l'ordre des indices basé sur l'algorithme de Chris pour le résoudre.
Le code acceptera la saisie d'un modèle de mots croisés, sous la forme d'un .
représentant un carré blanc et d'un #
représentant un carré noir.
Exemple :
.....#.........
.#.#.#.#.#.#.#.
...#...#.......
.#.#.#.#.#.#.#.
....#..........
##.#.#.#.#.#.#.
......#........
.###.#####.###.
........#......
.#.#.#.#.#.#.##
..........#....
.#.#.#.#.#.#.#.
.......#...#...
.#.#.#.#.#.#.#.
.........#.....
L'entrée peut se faire par: a) une lecture de fichier de la représentation du mot croisé, ou b) par l'entrée ligne de chaque ligne du mot croisé, suivie par \n
, avec une seconde \n
indiquant EOF.
Et puis il déterminera la méthode par laquelle Chris le résoudrait selon l'algorithme ci-dessus qu'il a décrit.
La sortie doit être au format d'une série d'instructions séparées par des virgules sous la forme de n(A|D)
, où n
est le nombre d'indices suivi de A
pour à travers ou D
à bas.
Ainsi, dans l'exemple ci-dessus (à la fois de l'image et de l'exemple de modèle, qui sont les mêmes), la sortie serait:
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
Le code le plus court gagne ...
Essai
Vous devez fournir avec votre soumission le code, un nombre d'octets, ainsi que l'un des quatre cas de test représentés dans le format .
et #
, ainsi que la sortie générée à partir de cette entrée. Il existe quatre cas de test, les trois ci-dessous ainsi que l'exemple de modèle ci-dessus.
Exemples de cas de test:
Cas de test 1
.....#
.#.#.#
...#..
.#.#.#
.....#
##.#..
Production: 1A,1D,2D,3D,4A,5A,6A,7A
Cas de test 2
.....#..
.#.##..#
.#....#.
...##.#.
.####...
......##
Production: 1A,1D,2D,5A,4D,4A,3D,3A,7A,8A,6D,9A
Cas de test 3
.........#
#.#.#.#.#.
....#...#.
#...#.#.#.
..###.#.#.
.#....#...
.#####...#
.....###..
Production: 1A,2D,3D,4D,5D,7A,8A,9A,10A,11A,11D,12A,13A,6D,14D,15A,16A,17A
Cas de test 4
.....#.........
.#.#.#.#.#.#.#.
...#...#.......
.#.#.#.#.#.#.#.
....#..........
##.#.#.#.#.#.#.
......#........
.###.#####.###.
........#......
.#.#.#.#.#.#.##
..........#....
.#.#.#.#.#.#.#.
.......#...#...
.#.#.#.#.#.#.#.
.........#.....
Production: 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
Bonne chance!
17A
à la fin. Aussi le quatrième 4A
juste après 4D
.