Uma atividade que às vezes faço quando estou entediada é escrever alguns caracteres em pares correspondentes. Em seguida, traço linhas (por cima, nunca abaixo) para conectar esses caracteres. Por exemplo, eu poderia escrever e depois desenhar as linhas como:
Ou eu poderia escrever
Depois de desenhar essas linhas, tento desenhar loops fechados em torno dos pedaços, para que meu loop não cruze nenhuma das linhas que acabei de desenhar. Por exemplo, no primeiro, o único loop que podemos desenhar é em torno da coisa toda, mas no segundo, podemos desenhar um loop em torno dos s (ou de todo o resto)
Se brincarmos com isso por um tempo, descobriremos que algumas cordas só podem ser desenhadas, de modo que os loops fechados contenham todas ou nenhuma das letras (como nosso primeiro exemplo). Vamos chamar essas cadeias de caracteres bem ligadas.
Observe que algumas seqüências de caracteres podem ser desenhadas de várias maneiras. Por exemplo, pode ser desenhado das duas maneiras a seguir (e uma terceira não incluída):
Se uma dessas maneiras puder ser desenhada de forma que um loop fechado possa ser feito para conter alguns dos caracteres sem cruzar nenhuma das linhas, a sequência não estará bem vinculada. (então não está bem vinculado)
Tarefa
Sua tarefa é escrever um programa para identificar cadeias que estão bem vinculadas. Sua entrada será composta por uma sequência em que cada caractere aparece um número par de vezes, e sua saída deve ser um dos dois valores consistentes distintos, um se as sequências estiverem bem vinculadas e a outra, caso contrário.
Além disso o programa deve ser uma cadeia bem ligado significado
Cada personagem aparece um número par de vezes no seu programa.
Ele deve gerar o valor de verdade quando aprovado.
Seu programa deve ser capaz de produzir a saída correta para qualquer sequência que consiste em caracteres de ASCII imprimível ou no seu próprio programa. Com cada personagem aparecendo um número par de vezes.
As respostas serão pontuadas em comprimentos em bytes, com menos bytes sendo uma pontuação melhor.
Sugestão
Uma cadeia de caracteres não está bem vinculada se existir uma substring estrita não-vazia contígua, de modo que cada caractere apareça um número par de vezes nessa substring.
Casos de teste
abcbac -> True
abbcac -> False
bbbb -> False
abacbc -> True
abcbabcb -> True
abcbca -> False
there
.
abcbca -> False
.