Produisez un programme pour numéroter correctement une grille de mots croisés.
Contribution
L'entrée sera le nom d'un fichier représentant la grille de mots croisés. Le nom du fichier d'entrée peut être passé sous forme d'argument, sur l'entrée standard ou par d'autres moyens conventionnels autres que le codage en dur.
Format de fichier de grille: un fichier texte. La première ligne se compose de deux constantes entières séparées par des espaces blancs M
et N
. À la suite de cette ligne se trouvent des M
lignes composées chacune de N
caractères (plus une nouvelle ligne) sélectionnés parmi [#A-Z ]
. Ces caractères sont interprétés de manière à '#'
indiquer un carré bloqué, ' '
un carré ouvert dans le puzzle sans contenu connu et toute lettre un carré ouvert contenant cette lettre.
Production
La sortie sera un fichier de numérotation et peut être envoyée à la sortie standard, à un fichier dont le nom est dérivé du nom de fichier d'entrée, à un fichier spécifié par l'utilisateur ou à une autre destination conventionnelle.
Format de fichier de numérotation Un fichier texte. Les lignes commençant par '#' sont ignorées et peuvent être utilisées pour les commentaires. Toutes les autres lignes contiennent un onglet séparé triplet i
, m
, n
où i
représente un nombre devant être imprimé sur la grille, et m
et n
représentent la rangée et la colonne de la place où il doit être imprimé. Le nombre de lignes et de colonnes commence à 1.
Schéma de numérotation
Une grille correctement numérotée a les propriétés suivantes:
- La numérotation commence à 1.
- Aucune colonne ou étendue de carrés ouverts n'est non numérotée. (Vous pouvez supposer qu'aucune réponse de caractère unique n'existera dans le problème.)
- Les nombres seront rencontrés dans l'ordre de comptage en scannant de la ligne du haut vers le bas en prenant chaque ligne de gauche à droite. (Ainsi, chaque étendue horizontale est numérotée sur son carré le plus à gauche, et chaque colonne est numérotée sur son carré le plus haut.)
Entrée de test et sortie attendue
Contribution:
5 5
# ##
#
#
#
## #
Sortie (en négligeant les lignes de commentaire):
1 1 2
2 1 3
3 2 2
4 2 4
5 2 5
6 3 1
7 3 4
8 4 1
9 4 3
10 5 3
De côté
Il s'agit du premier de ce qui sera, espérons-le, plusieurs défis liés aux mots croisés. Je prévois d'utiliser un ensemble cohérent de formats de fichiers tout au long du processus et de créer une suite respectable d'utilitaires liés aux mots croisés. Par exemple, un puzzle ultérieur nécessitera l'impression d'une version ASCII des mots croisés en fonction de l'entrée et de la sortie de ce puzzle.
'\n'
en c sur toutes les plateformes. L'hypothèse est que le fichier d'entrée a été produit sur le même système qui le traitera, donc ce problème devrait être transparent. Une note générale sur le code-golf: si vous travaillez dans une langue étrange ou sur une plate-forme étrange, notez simplement tout ce qui pourrait surprendre le lecteur. Les gens en tiendront compte pour juger votre soumission.