Um pangram é uma sequência que contém todas as letras a
- z
do alfabeto inglês, sem distinção entre maiúsculas e minúsculas. (Tudo bem se o pangram contiver mais de uma cópia de uma carta ou se não houver caracteres além das letras.)
Escreva um programa ou função cuja entrada seja uma lista de cadeias e que produza uma ou mais cadeias que possuam as seguintes propriedades:
- Cada sequência de saída deve ser um pangram.
- Cada sequência de saída deve ser formada concatenando uma ou mais sequências da lista de entrada, separadas por espaços.
- Cada sequência de saída deve ser a mais curta ou vinculada ao menor entre todas as seqüências com essas propriedades.
Muitos programas escolhem produzir apenas uma string; você só desejaria gerar mais de uma sequência se, caso contrário, tivesse que escrever um código extra para limitar a saída.
Você pode supor que a entrada não contenha caracteres ou espaços não imprimíveis e que nenhuma palavra contenha mais do que (26 vezes o logaritmo natural do comprimento da lista) caracteres. (Você não pode supor, no entanto, que a entrada contenha apenas letras ou minúsculas; sinais de pontuação e maiúsculas são totalmente possíveis.)
Entrada e saída podem ser fornecidas em qualquer formato razoável. Para testar seu programa, recomendo o uso de dois casos de teste: um dicionário de palavras em inglês (a maioria dos computadores possui um) e o seguinte (para o qual um pangram perfeito (26 letras) é impossível, você deve encontrar um contendo letras duplicadas):
abcdefghi
defghijkl
ijklmnop
lmnopqrs
opqrstuvw
rstuvwxyz
Você deve incluir uma amostra da saída do seu programa junto com o envio. (Isso pode ser diferente para pessoas diferentes, como resultado do uso de listas de palavras diferentes.)
Condição de vitória
Este é um desafio de código-golfe de complexidade restrita . O vencedor é o programa mais curto (em bytes) executado em tempo polinomial . (Um resumo para pessoas que não sabem o que isso significa: se você dobrar o tamanho da lista de palavras, o programa deverá ficar mais lento em não mais que um fator constante. No entanto, o fator constante em questão pode ser tão grande quanto você Por exemplo, é válido que ele se torne quatro vezes mais lento ou oito vezes mais lento, mas não se torne menor por um fator do comprimento da lista de palavras; o fator pelo qual se torna mais lento deve ser delimitado.)