Kto musi porównywać sprawy bez rozróżniania wielkości liter, gdy jesteś w stanie wygenerować każdą kombinację wielkich i małych liter? Nikt! To jest odpowiedź. Nikt tego nie robi. Twoim zadaniem jest osiągnięcie tego wyczynu; wygeneruj wszystkie możliwe kombinacje wielkich / małych liter dla danego wejścia.
Wkład
Ciąg standardowych znaków ascii do wydrukowania. Nie należy zakładać, że dane wejściowe są pisane małymi literami. Dane wejściowe zawsze będą zawierać co najmniej jeden znak.
Wydajność
Każda permutacja wielkich i małych liter dla wprowadzonego ciągu (bez duplikatów). Powinno to zmieniać tylko znaki w małej i dużej wersji (liczby pozostaną takie same). Każda permutacja musi być wyprowadzana jako ciąg znaków lub lista znaków; listy ciągów singletonów są niedozwolone.
Przykłady
a1a
['a1a', 'a1A', 'A1a', 'A1A']
abc
['abc', 'abC', 'aBc', 'aBC', 'Abc', 'AbC', 'ABc', 'ABC']
Hi!
['hi!', 'hI!', 'Hi!', 'HI!']
Punktacja
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź (w bajtach).
Dla zabawy warto zobaczyć, ile dodatkowego wysiłku zajmie obsłużenie rozszerzonych postaci ascii, oto dodatkowy przypadek testowy:
ž1a -> ['ž1a', 'ž1A', 'Ž1a', 'Ž1A']
(twój program nie musi tego obsługiwać)
Hi!
dał {('H', 'i', '!'), ('h', 'I', '!'), ('h', 'i', '!'), ('H', 'I', '!')}
byłoby to dopuszczalne?
Σ
jest to wersja pisana wielkimi literami na początku słowa, σ
to wersja pisana małymi literami na początku lub w środku, ale nie na końcu słowa, i ς
jest wersją pisaną małymi literami tylko na końcu słowa.
Σ
→['Σ', 'σ', 'ς']