En tant que personne qui ne peut pas être gênée de regarder ses pentominos pour voir si elle a une forme rectangulaire, j'ai décidé de vous faire écrire un programme qui le fait.
Ta tâche
Étant donné certaines entrées divisées par des sauts de ligne contenant 12 caractères uniques, décidez si c'est une solution valide.
Une solution valide DOIT
- Avoir 5 de chaque personnage (sauf les nouvelles lignes)
- Chaque jeu de caractères doit être entièrement connecté
- Chaque jeu de caractères doit avoir une forme unique
- Être dans une forme rectangulaire régulière
S'il s'agit d'une solution valide, affichez une valeur vraie, sinon affichez une valeur fausse.
Votre programme peut être une fonction ou un programme complet mais doit prendre l'entrée de stdin et la sortie vers stdout.
Cas de test
Solutions valides
000111
203331
203431
22 444
2 46
57 666
57769!
58779!
58899!
5889!!
00.@@@ccccF111//=---
0...@@c))FFF1//8===-
00.ttttt)))F1/8888=-
Configurations invalides
invalid (doesn't contain 12 unique characters)
111112222233333444445555566666
77777888889999900000qqqqqwwwww (Each set has the same shape)
1234567890qw
w1234567890q
qw1234567890
0qw123456789
90qw12345678 (None of the characters are connected)
1234567890qw (Not 5 characters in every set)
1111122222333334444455555666666
77777888889999900000qqqqqwwwwww (More than 5 characters in some sets)
00
0
00.@@@ccccF111//=---
...@@c))FFF1//8===-
.ttttt)))F1/8888=- (Doesn't form a rectangular shape)
Réponses:
JavaScript (ES6),
237235222 octets2 octets enregistrés grâce à @DankMemes !
Usage
Explication
Quelques notes sur cette solution:
STDIN
etSTDOUT
pour l'entrée et la sortie, maisprompt()
sont uniquement conçues pour une entrée sur une seule ligne et mon ordinateur (Windows) place automatiquement des\r\n
caractères à chaque nouvelle ligne lors du collage, donc j'en ai fait une fonction qui accepte une chaîne.la source
l=p.indexOf`<newline here>`
pour économiser 2 octets