Я пытаюсь создать сетку поиска слов со списком заданных слов. Моя проблема в том, что некоторые слова не отображаются должным образом.Как сгенерировать сетку поиска слов, которая позволяет использовать слова с использованием одной и той же буквы
Я обновил код, смотрите ниже
Я попытался исправить предыдущую ошибку, и теперь я получаю ошибку выхода за диапазон, что я не могу исправить, если кто-нибудь может помочь я был бы признателен
Примечание 1: Я не включают в себя все функции программы, в случае необходимости я буду включать их позже
программа занимает в текстовый файл, например так:
9 9 white black blue green pink yellow red grey purple
где первые 2 числа в файле являются размерами сетки, а остальные - словами, которые нужно разместить в сетке.
import random
import string
fi=input('Insert the entry file name(entry.txt): ')
fo=input('Insert the exit file name(.txt): ')
grid_size=[]
words=[]
matrix=[]
def read_file(storage):
file=open(storage)
n=file.readline()
lista=n.split()
lista=list(map(int,lista)) #sets the size of the grid
for i in lista:
grid_size.append(i)
for line in file:
line=line.replace("\n","")
words.append(line)
file.close()
def grid_generator(grid_size):
n, p = grid_size
for i in range(n):
matriz.append([])
for j in range(p):
matriz[i].append(".")
def sets_word_inside(grid_size, word, grid):
n, p = grid_size
word = random.choice([word,word[::-1]])
#horizontal,vertical,diagonal
d = random.choice([[1,0],[0,1],[1,1]])
xsize = n if d[0] == 0 else n - len(word)
ysize = p if d[1] == 0 else p - len(word)
x= random.randrange(0,xsize)
y= random.randrange(0,ytsize) #position
for i, letter in enumerate(word):
char = grid[y+d[1]*i][x+d[0]*i]
if char != " " and char != letter:
# If it reaches an already filled space - restart the process.
# The second condition allow the words that cross with repeated words are created.
return False
grid[y+d[1]*i][x+d[0]*i] = letter[i]
return True
Для теперь выхода коды что-то вроде этого:
9
white
black
blue
green
pink
yellow
red
grey
purple
p w b i t y l d i
p v w o l e e y t
x g a x j r i m g
q i c j b g j e x
s s k g q l g r r
p i n k i o u t r
e l p r u p g e o
l a b l s r p g y
c o r y e u f r x
Это звучит как вопрос о конкурсе программирования, который я когда-то решил. Это звучит как идеальная задача для решения * ограничения (логического) программирования. –
Willem Van Onsem Вы можете мне помочь? – MDordio
Добро пожаловать в StackOverflow. Прочтите и следуйте инструкциям по отправке в справочной документации.[Минимальный, полный, проверяемый пример] (http://stackoverflow.com/help/mcve) применим здесь. Мы не можем эффективно помочь вам, пока вы не разместите свой код MCVE и не сможете точно описать проблему. «некоторые из них путаются» не является описанием проблемы. – Prune