Кому потрібно порівнювати регістр речей без чутливості, коли ти можеш генерувати кожну перестановку великих і малих літер? Ніхто! Ось відповідь. Ніхто не робить. Ваше завдання - досягти цього подвигу; генерувати всі можливі перестановки з великого / нижнього регістру для заданого вводу.
Вхідні дані
Рядок друкованих стандартних символів ascii. Вхідні дані не повинні вважатись малими літерами. Вхід завжди буде хоча б одним символом.
Вихідні дані
Кожна перестановка великих і малих рядків для введеного рядка (без дублікатів). Це має змінити символи лише з малою та великою версією (цифри залишаться однаковими). Кожна перестановка повинна виводитися у вигляді рядка або списку символів; списки однорядних рядків не дозволяються.
Приклади
a1a
['a1a', 'a1A', 'A1a', 'A1A']
abc
['abc', 'abC', 'aBc', 'aBC', 'Abc', 'AbC', 'ABc', 'ABC']
Hi!
['hi!', 'hI!', 'Hi!', 'HI!']
Оцінка балів
Це код-гольф , тому найкоротша відповідь (у байтах) виграє.
Як додаткову забаву, подивіться, скільки додаткових зусиль буде потрібно для роботи з розширеними символами ascii, ось додатковий тестовий випадок:
ž1a -> ['ž1a', 'ž1A', 'Ž1a', 'Ž1A']
(вашій програмі це не потрібно підтримувати)
Hi!
дав {('H', 'i', '!'), ('h', 'I', '!'), ('h', 'i', '!'), ('H', 'I', '!')}
би це було прийнятно?
Σ
літера у верхньому регістрі на початку слова, σ
це маленька версія на початку або в середині, але не в кінці слова, і ς
це малі версії лише в кінці слова.
Σ
→['Σ', 'σ', 'ς']