Ceci est un défi supplémentaire au défi de génération d'énigmes Loopy . Vous voudrez peut-être résoudre ce défi avant de tenter le défi le plus difficile du lien précédent.
Le but de ce défi est de valider la solution d'un puzzle en boucle. Veuillez prendre toute la documentation sur ce qu'est un puzzle en boucle du lien précédent. Un puzzle en boucle résolu est formaté de manière très similaire à la sortie d'une soumission valide au défi «générer des puzzles en boucle» et peut ressembler à ceci:
+-+-+ +-+ +-+ +
| | | |2|3|
+-+ + + + + +-+
2| | | |2| 3|
+ + +-+ + + +-+
2| 2 1|3| |
+-+ +-+ +-+ +-+
|2 | | 1 2|
+ +-+ +-+ +-+ +
| |2 1 2|3|3| |
+ + +-+ +-+ +-+
| | |3|2 1
+ +-+ +-+-+-+-+
| 2 2 |
+-+-+-+-+-+-+-+
Le chemin qui compose la solution est marqué par |
et des -
caractères entre les +
caractères.
Spécification d'entrée
Votre programme recevra un puzzle en boucle avec une solution formatée comme l'exemple ci-dessus en entrée. Votre programme doit déduire la taille du puzzle à partir de l'entrée. Vous pouvez faire les hypothèses suivantes sur l'entrée:
- Le puzzle n'a pas moins de 2 et pas plus de 99 cellules dans les deux sens
- Ainsi, chaque ligne a une longueur maximale de 199 caractères n'incluant pas le (s) caractère (s) de nouvelle ligne
- Ainsi, l'entrée contient un maximum de 99 lignes
- chaque ligne peut se terminer après le dernier caractère imprimable ou peut être complétée par des caractères blancs afin qu'elle ait une longueur allant jusqu'à 2 · y + 1 caractères où y est le nombre de cellules dans le sens horizontal
- chaque position avec les coordonnées x et y contient même un
+
caractère - les positions adjacentes horizontalement ou verticalement aux positions contenant des
+
caractères contiennent soit un espace, sont derrière la fin de la ligne ou contiennent un-
caractère si elles sont adjacentes horizontalement ou un|
caractère si elles sont adjacentes verticalement - toutes les autres positions sont soit derrière l'extrémité de la ligne ou contenir l' un des caractères
,
0
,1
,2
, ou3
- toutes les lignes se terminent par le ou les caractères de nouvelle ligne par défaut de votre plate-forme
- il y a exactement un saut de ligne
Les contributions doivent être reçues de l'une des manières suivantes:
- De l'entrée standard
- Comme la valeur d'un paramètre nommé
p
dans une requête HTTP POST - En tant que contenu d'un formulaire HTML
- En tant que contenu d'un fichier nommé
p
dans un répertoire défini par l'implémentation - D'une manière définie par l'implémentation lors de l'exécution si les quatre anciens ne sont pas disponibles
- Codé en dur si votre langue ne fournit aucun moyen de recevoir des données
Spécifications de sortie
Votre programme doit se terminer pour toutes les entrées correspondant à la spécification d'entrée et doit calculer si la solution au puzzle est correcte. Votre programme doit afficher le résultat du calcul sous forme de valeur booléenne de l'une des manières suivantes:
- En tant qu'état de sortie de zéro (la solution est valide) ou non nulle (la solution n'est pas valide)
- Comme le caractère
y
(la solution est valide) oun
(la solution n'est pas valide) suivi de zéro ou plusieurs caractères arbitraires sortis d'une manière définie par l'implémentation
Le comportement de votre programme n'est pas spécifié lorsque vous rencontrez une entrée non formatée conformément à la spécification d'entrée.
Notation
Le score de votre programme est le nombre de caractères dans sa source, à l'exception des caractères d'espacement et des commentaires omittables. Nous vous encourageons à mettre en retrait votre soumission afin qu'elle soit plus facile à lire pour les autres et à commenter votre solution afin qu'elle soit plus facile à suivre.
Les soumissions qui ne respectent pas les spécifications d'entrée ou de sortie ou qui génèrent des résultats incorrects ne sont pas valides.
0
est également un numéro valide pour une cellule.Réponses:
GolfScript, 133 caractères
Attend l'entrée de STDIN et imprime
y
une solution valide etn
non valide. Effectue la tâche en utilisant principalement le remplacement de chaîne sur la grille ou avec des versions pivotées de la grille.Code annoté:
la source
C #
803579 octetsLe programme complet, lu à partir de STDIN, devrait faire face à tout schéma de nouvelle ligne commun tant qu'il a des sauts de ligne. Merci à HackerCow d'avoir souligné que je n'ai pas à ajouter une nouvelle ligne dans une question différente, m'invitant à la supprimer ici et à économiser 4 octets
Code golf:
Le code effectue 3 vérifications, vérifiant d'abord le nombre de lignes autour de chaque numéro et que chaque jonction a 0 ou 2 lignes qui en découlent, puis que toutes les lignes sont jointes.
Code formaté:
la source
Cobra - 514
Vérifie si chaque numéro a le bon nombre de lignes à côté, puis parcourt un chemin autour des lignes et vérifie s'il en a manqué.
la source