Le jeu BattleBlock Theatre contient parfois un puzzle qui est une version généralisée de Lights Out . Vous avez trois blocs adjacents, chacun indiquant un niveau entre 1 et 4 inclus avec des barres, par exemple:
|
||||
||
Si vous touchez un bloc, ce bloc ainsi que tout bloc adjacent augmentera son niveau (retour de 4 à 1). Le casse-tête est résolu lorsque les trois blocs affichent le même niveau (peu importe le niveau). Étant donné que l'ordre dans lequel vous touchez les blocs n'a pas d'importance, nous désignons une solution selon la fréquence à laquelle chaque bloc est touché. La solution optimale pour l'entrée ci-dessus serait 201
:
| --> || --> ||| |||
|||| | || |||
|| || || --> |||
Le jeu généralise très facilement n'importe quel nombre de blocs, bien que pour certains nombres, toutes les configurations ne soient pas résolubles.
Le défi
Étant donné une séquence de niveaux de blocs, indiquez à quelle fréquence chaque bloc doit être touché pour résoudre le puzzle. Par exemple, l'exemple ci-dessus serait donné en tant que 142
et pourrait donner 201
en conséquence. S'il n'y a pas de solution, renvoyez une sortie cohérente de votre choix, qui se distingue de toutes les solutions potentielles, par exemple, -1
ou une chaîne vide.
Vous pouvez écrire une fonction ou un programme, prendre une entrée via STDIN, un argument de ligne de commande ou un argument de fonction, dans n'importe quel format de liste ou de chaîne pratique, et également sorti via une valeur de retour ou en imprimant sur STDOUT.
Votre code doit renvoyer des résultats corrects pour tous les cas de test dans une minute sur une machine raisonnable. (Ce n'est pas une limite complètement stricte, donc si votre solution prend une minute et dix secondes, c'est bien, mais si cela prend 3 minutes, ce n'est pas le cas. Un bon algorithme les résoudra facilement en quelques secondes.)
Il s'agit du code golf, donc la réponse la plus courte (en octets) l'emporte.
Exemples
Les solutions ne sont pas uniques, vous pouvez donc obtenir des résultats différents.
Input Output
1 0
11 00
12 No solution
142 201
434 101
222 000
4113 0230
32444 No solution
23432 10301
421232 212301
3442223221221422412334 0330130000130202221111
22231244334432131322442 No solution
111111111111111111111222 000000000000000000000030
111111111111111111111234 100100100100100100100133
412224131444114441432434 113013201011001101012133
Pour autant que je sache, il y a exactement 4 solutions pour chaque entrée où le nombre de blocs est 0 mod 3, ou 1 mod 3, et il y a 0 ou 16 solutions où il est 2 mod 3.