Нужно написать программу выводящую всевозможные строки подходящие по условию

Условие:

  • Строка стоит из 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])

https://ideone.com/b4Xpw5

→ Ссылка
Автор решения: 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))
→ Ссылка