Una actividad que a veces hago cuando estoy aburrido es escribir un par de caracteres en pares coincidentes. Luego dibujo líneas (sobre las partes superiores nunca debajo) para conectar estos personajes. Por ejemplo, podría escribir y luego dibujaría las líneas como:
O podría escribir
Una vez que he dibujado estas líneas, trato de dibujar bucles cerrados alrededor de los fragmentos para que mi bucle no se cruce con ninguna de las líneas que acabo de dibujar. Por ejemplo, en el primero, el único bucle que podemos dibujar es alrededor de todo, pero en el segundo podemos dibujar un bucle alrededor de solo s (o todo lo demás)
Si jugamos un poco con esto, descubriremos que algunas cadenas solo se pueden dibujar para que los bucles cerrados contengan todas o ninguna de las letras (como nuestro primer ejemplo). Llamaremos a estas cadenas cadenas bien vinculadas.
Tenga en cuenta que algunas cadenas se pueden dibujar de múltiples maneras. Por ejemplo, se puede dibujar de las dos formas siguientes (y una tercera no incluida):
Si se puede dibujar una de estas formas de modo que se pueda hacer que un bucle cerrado contenga algunos de los caracteres sin intersectar ninguna de las líneas, entonces la cadena no está bien vinculada. (entonces no está bien vinculado)
Tarea
Su tarea es escribir un programa para identificar cadenas que estén bien vinculadas. Su entrada consistirá en una cadena donde cada carácter aparece un número par de veces, y su salida debe ser uno de dos valores consistentes distintos, uno si las cadenas están bien vinculadas y el otro en caso contrario.
Además, su programa debe ser un significado de cadena bien vinculado
Cada personaje aparece un número par de veces en su programa.
Debería generar el valor verdadero cuando se pasa a sí mismo.
Su programa debe poder producir la salida correcta para cualquier cadena que conste de caracteres de ASCII imprimible o de su propio programa. Con cada personaje apareciendo un número par de veces.
Las respuestas se puntuarán como sus longitudes en bytes, siendo menos bytes una mejor puntuación.
Insinuación
Una cadena no está bien vinculada si existe una subcadena estricta contigua no vacía, de modo que cada carácter aparezca un número par de veces en esa subcadena.
Casos de prueba
abcbac -> True
abbcac -> False
bbbb -> False
abacbc -> True
abcbabcb -> True
abcbca -> False
there
.
abcbca -> False
.