Chi deve confrontare le cose in modo insensibile quando si è in grado di generare ogni permutazione di maiuscole e minuscole? Nessuno! Questa è la risposta Nessuno lo fa. Il tuo compito è raggiungere questa impresa; genera tutte le possibili permutazioni di maiuscole / minuscole per un dato input.
Ingresso
Una stringa di caratteri ASCII standard stampabili. L'immissione non dovrebbe essere considerata tutta in minuscolo. L'input sarà sempre almeno un carattere.
Produzione
Ogni permutazione di lettere maiuscole e minuscole per la stringa immessa (senza duplicati). Questo dovrebbe cambiare solo i caratteri con una versione piccola e grande (i numeri rimarranno gli stessi). Ogni permutazione deve essere emessa come una stringa o un elenco di caratteri; gli elenchi di stringhe singleton non sono consentiti.
Esempi
a1a
['a1a', 'a1A', 'A1a', 'A1A']
abc
['abc', 'abC', 'aBc', 'aBC', 'Abc', 'AbC', 'ABc', 'ABC']
Hi!
['hi!', 'hI!', 'Hi!', 'HI!']
punteggio
Questo è code-golf , quindi vince la risposta più breve (in byte).
Come extra divertente vedi quanto ulteriore sforzo ci vorrà per gestire i caratteri ASCII estesi, ecco un ulteriore test case:
ž1a -> ['ž1a', 'ž1A', 'Ž1a', 'Ž1A']
(il tuo programma non ha bisogno di supportare questo)
Hi!
dato {('H', 'i', '!'), ('h', 'I', '!'), ('h', 'i', '!'), ('H', 'I', '!')}
sarebbe accettabile?
Σ
è la versione maiuscola all'inizio di una parola, σ
è la versione minuscola all'inizio o al centro ma non alla fine di una parola, ed ς
è la versione minuscola solo alla fine di una parola.
Σ
→['Σ', 'σ', 'ς']