Une activité que je fais parfois quand je m'ennuie est d'écrire deux ou trois personnages par paires. Je trace ensuite des lignes (sur les sommets jamais en dessous) pour relier ces personnages. Par exemple, je pourrais écrire puis dessiner les lignes comme :
Ou je pourrais écrire
Une fois que j'ai tracé ces lignes, j'essaie de dessiner des boucles fermées autour de morceaux afin que ma boucle ne coupe aucune des lignes que je viens de dessiner. Par exemple, dans la première, la seule boucle que nous puissions dessiner est tout autour, mais dans la seconde, nous pouvons dessiner une boucle uniquement autour de s (ou de tout le reste).
Si nous jouons avec cela pendant un moment, nous verrons que certaines chaînes ne peuvent être dessinées que pour que les boucles fermées contiennent toutes les lettres, voire aucune (comme dans notre premier exemple). Nous appellerons ces chaînes des chaînes bien liées.
Notez que certaines chaînes peuvent être dessinées de plusieurs manières. Par exemple, peut être dessiné des deux manières suivantes (et une troisième non incluse):
Si l’un de ces moyens peut être dessiné de telle sorte qu’une boucle fermée puisse contenir certains des caractères sans croiser aucune des lignes, la chaîne n’est pas bien liée. (donc n'est pas bien lié)
Tâche
Votre tâche consiste à écrire un programme pour identifier les chaînes bien liées. Votre entrée consistera en une chaîne dans laquelle chaque caractère apparaît un nombre pair de fois et votre sortie doit être l’une des deux valeurs cohérentes distinctes, l’une si les chaînes sont bien liées et l’autre dans le cas contraire.
En outre votre programme doit être une chaîne bien liée sens
Chaque caractère apparaît un nombre pair de fois dans votre programme.
Il devrait sortir la valeur de vérité une fois passé lui-même.
Votre programme doit être capable de produire la sortie correcte pour toute chaîne composée de caractères à partir de fichiers ASCII imprimables ou de votre propre programme. Chaque caractère apparaissant un nombre pair de fois.
Les réponses seront notées sous forme de longueurs en octets, moins d'octets étant meilleurs.
Allusion
Une chaîne n'est pas bien liée si et seulement si une sous-chaîne stricte non vide et contiguë existe de sorte que chaque caractère apparaisse un nombre pair de fois dans cette sous-chaîne.
Cas de test
abcbac -> True
abbcac -> False
bbbb -> False
abacbc -> True
abcbabcb -> True
abcbca -> False
there
.
abcbca -> False
.