Генератор кроссвордов на 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, возможно с несколькими пересечениями(не обязательно). Не знаю как это реализовать, возможно есть идеи или возможно полноценное решение этой задачи.