Quem precisa comparar as maiúsculas e minúsculas quando você é capaz de gerar todas as permutações de maiúsculas e minúsculas? Ninguém! Essa é a resposta. Ninguém faz. Sua tarefa é conseguir esse feito; gere todas as permutações possíveis de maiúsculas / minúsculas para uma determinada entrada.
Entrada
Uma sequência de caracteres ASCII padrão imprimíveis. A entrada não deve ser assumida como minúscula. A entrada sempre terá pelo menos um caractere.
Saída
Toda permutação de maiúsculas e minúsculas para a sequência inserida (sem duplicatas). Isso deve mudar apenas caracteres com uma versão pequena e grande (os números permanecerão os mesmos). Cada permutação deve ser impressa como uma string ou uma lista de caracteres; listas de strings singleton não são permitidas.
Exemplos
a1a
['a1a', 'a1A', 'A1a', 'A1A']
abc
['abc', 'abC', 'aBc', 'aBC', 'Abc', 'AbC', 'ABc', 'ABC']
Hi!
['hi!', 'hI!', 'Hi!', 'HI!']
Pontuação
Isso é código-golfe , então a resposta mais curta (em bytes) vence.
Como um divertido extra, veja quanto esforço adicional será necessário para lidar com os caracteres ASCII estendidos, aqui está um caso de teste extra:
ž1a -> ['ž1a', 'ž1A', 'Ž1a', 'Ž1A']
(seu programa não precisa suportar isso)
Hi!
deu {('H', 'i', '!'), ('h', 'I', '!'), ('h', 'i', '!'), ('H', 'I', '!')}
, isso seria aceitável?
Σ
é a versão em maiúscula no início de uma palavra, σ
é a versão em minúscula no início ou no meio, mas não no final de uma palavra, e ς
é a versão em minúscula apenas no final de uma palavra.
Σ
→['Σ', 'σ', 'ς']