Qui a besoin de comparer les choses de manière insensible lorsque vous êtes en mesure de générer chaque permutation de majuscules et de minuscules? Personne! Voilà la réponse. Personne ne le fait. Votre tâche consiste à réaliser cet exploit; générer toutes les permutations possibles de majuscules / minuscules pour une entrée donnée.
Contribution
Une chaîne de caractères ascii standard imprimables. L'entrée ne doit pas être supposée être entièrement en minuscules. L'entrée sera toujours au moins un caractère.
Sortie
Chaque permutation de majuscules et minuscules pour la chaîne entrée (pas de doublons). Cela ne devrait changer que les caractères avec une petite et une grande version (les chiffres resteront les mêmes). Chaque permutation doit être sortie sous forme de chaîne ou de liste de caractères; les listes de chaînes singleton ne sont pas autorisées.
Exemples
a1a
['a1a', 'a1A', 'A1a', 'A1A']
abc
['abc', 'abC', 'aBc', 'aBC', 'Abc', 'AbC', 'ABc', 'ABC']
Hi!
['hi!', 'hI!', 'Hi!', 'HI!']
Notation
Il s'agit de code-golf , donc la réponse la plus courte (en octets) l'emporte.
Comme un extra amusant voir combien d'efforts supplémentaires il faudra pour gérer les caractères ascii étendus, voici un cas de test supplémentaire:
ž1a -> ['ž1a', 'ž1A', 'Ž1a', 'Ž1A']
(votre programme n'a pas besoin de le supporter)
Hi!
donné, {('H', 'i', '!'), ('h', 'I', '!'), ('h', 'i', '!'), ('H', 'I', '!')}
serait-ce acceptable?
Σ
c'est la version en majuscule au début d'un mot, σ
est la version en minuscule au début ou au milieu mais pas la fin d'un mot, et ς
est la version en minuscule seulement à la fin d'un mot.
Σ
→['Σ', 'σ', 'ς']