Генератор кроссвордов на Python

Нужно сделать генерацию кроссвордов на Python. Написал следующий костыль:

from PIL import Image

img = Image.open('Images/base.png')
banner = Image.open('Images/banner.png')

def search_reps(words: list) -> list:
    letters = {}

    for word in words:
        for letter in word:
            if letter in letters:
                letters[letter] += 1
            else:
                letters[letter] = 1

    reps = [letter for letter, count in letters.items() if count > 1]
    return reps

def create_one_word(words: list, reps: list):
    word_one = {}
    word_two = []
    word_one_ind = 0
    lenght = 400
    height = 200

    for letter in words[0]:
        word_one[letter] = word_one_ind
        word_one_ind += 1
        img.paste(banner, (lenght, height), banner)
        img.save("img_with_watermark.png")
        lenght += 80
    lenght = 400

    print(word_one)
    for letters in words[1:]:
        for letter in letters:
            for rep in reps:
                if rep in letter:
                    lenght = lenght + 80 * word_one[letter]
                    print(lenght)
            if lenght > 400:
                break

    for letter in letters:
        img.paste(banner, (lenght, height), banner)
        img.save("img_with_watermark.png")
        height += 80

words_list = ['РАК', 'КРОТ']
reps = search_reps(words_list)
crossword = create_one_word(words_list, reps)

Работает с двумя словами. Надо увеличить кол-во слов до 5, возможно с несколькими пересечениями(не обязательно). Не знаю как это реализовать, возможно есть идеи или возможно полноценное решение этой задачи.


Ответы (0 шт):