¿Quién necesita comparar las cosas sin distinción entre mayúsculas y minúsculas cuando puede generar cada permutación de mayúsculas y minúsculas? ¡Ninguno! Esa es la respuesta. Nadie hace. Tu tarea es lograr esta hazaña; generar todas las permutaciones posibles de mayúsculas / minúsculas para una entrada dada.
Entrada
Una cadena de caracteres ascii estándar imprimibles. No se debe suponer que las entradas están en minúsculas. La entrada siempre tendrá al menos un carácter.
Salida
Cada permutación de mayúsculas y minúsculas para la cadena ingresada (sin duplicados). Esto solo debería cambiar los caracteres con una versión pequeña y grande (los números seguirán siendo los mismos). Cada permutación se debe generar como una cadena o una lista de caracteres; No se permiten listas de cadenas singleton.
Ejemplos
a1a
['a1a', 'a1A', 'A1a', 'A1A']
abc
['abc', 'abC', 'aBc', 'aBC', 'Abc', 'AbC', 'ABc', 'ABC']
Hi!
['hi!', 'hI!', 'Hi!', 'HI!']
Tanteo
Este es el código de golf , por lo que gana la respuesta más corta (en bytes).
Como un extra divertido, vea cuánto esfuerzo adicional se necesitará para manejar los caracteres ascii extendidos, aquí hay un caso de prueba adicional:
ž1a -> ['ž1a', 'ž1A', 'Ž1a', 'Ž1A']
(su programa no necesita soportar esto)
Hi!
da, {('H', 'i', '!'), ('h', 'I', '!'), ('h', 'i', '!'), ('H', 'I', '!')}
¿sería aceptable?
Σ
es la versión en mayúscula al comienzo de una palabra, σ
es la versión en minúscula al principio o en el medio pero no el final de una palabra, y ς
es la versión en minúscula solo al final de una palabra.
Σ
→['Σ', 'σ', 'ς']