Нужно написать программу выводящую всевозможные строки подходящие по условию
Условие:
- Строка стоит из 6 букв
- 1 и 4 буквы одинаковы
- Все остальные буквы должны быть уникальными и не повторятся между собой
- Только английские буквы
Строка должна выглядеть примерно так "abcade" Сижу уже часа три мучаюсь, не могу понять как это реализовать. Программу желательно написать на питоне, но можно и на любом другом языке, думаю дальше сам разберусь
Ответы (4 шт):
Автор решения: Кирилл Малышев
→ Ссылка
Вроде так
from itertools import permutations
import string
for p in permutations(string.ascii_lowercase, 4):
for l in string.ascii_lowercase:
if l not in p:
print(l + p[0] + p[1] + l + p[2] + p[3])
Автор решения: dIm0n
→ Ссылка
Вот так вот в лоб, но работать будет медленнее, чем перебор 5 символов, хотя печать лучше делать 1 раз:
import itertools, string
res = {p[:3] + tuple(p[0]) + p[4:] for p in itertools.permutations(string.ascii_lowercase, 6)}
print(res)
Автор решения: extrn
→ Ссылка
import itertools
import string
for p in itertools.permutations(string.ascii_lowercase, 5):
print(f'{p[0]}{p[1]}{p[2]}{p[0]}{p[3]}{p[4]}')
Автор решения: AndroID
→ Ссылка
Знаю, что мой код не самый лучший. Тот, до которого додумался. У меня работал 20 минут: 10 на обработку, 10 на вывод (результатов куча).
chars = [chr(x) for x in range(97, 123)]
res = []
def repeatingchars(s):
c = 0
for char in s:
c += s.count(char)
return c != len(s)
for c1 in chars:
for c2 in chars:
for c3 in chars:
for c4 in chars:
for c5 in chars:
for c6 in chars:
s = c1 + c2 + c3 + c4 + c5 + c6
if s[0] == s[3] and not repeatingchars(s[1:3] + s[4:]):
res.append(s)
for word in res:
print(word)
print("Results:", len(res))