Кому нужно сравнивать вещи без учета регистра, когда вы можете генерировать каждую перестановку прописных и строчных букв? Ни один. Никто! Это ответ. Никто не делает. Ваша задача - достичь этого подвига; генерировать все возможные перестановки прописных / строчных букв для заданного ввода.
вход
Строка печатных стандартных символов 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', '!')}
было бы это приемлемо?
Σ
это заглавная версия в начале слова, σ
строчная версия в начале или в середине, но не в конце слова, и ς
строчная версия только в конце слова.
Σ
→['Σ', 'σ', 'ς']