Создание матрицы 6x6 для игры в филворды состоит из нескольких этапов: генерация матрицы, размещение слов и заполнение пустых ячеек случайными буквами. Я предоставлю пример на Python, который демонстрирует принцип работы для вашего списка слов.
Вот пример кода, который выполняет все эти шаги:
```python
import random
import numpy as np
# Функция для проверки, можно ли разместить слово по горизонтали
def can_place_horizontal(grid, word, row, col):
if col + len(word) > len(grid):
return False
for i in range(len(word)):
if grid[row][col + i] not in (None, word[i]):
return False
return True
# Функция для размещения слова по горизонтали
def place_horizontal(grid, word, row, col):
for i in range(len(word)):
grid[row][col + i] = word[i]
# Функция для проверки, можно ли разместить слово по вертикали
def can_place_vertical(grid, word, row, col):
if row + len(word) > len(grid):
return False
for i in range(len(word)):
if grid[row + i][col] not in (None, word[i]):
return False
return True
# Функция для размещения слова по вертикали
def place_vertical(grid, word, row, col):
for i in range(len(word)):
grid[row + i][col] = word[i]
# Функция для создания матрицы и заполнения её словами
def create_word_matrix(words):
grid = [[None for _ in range(6)] for _ in range(6)]
for word in words:
placed = False
# Попытка разместить слово в случайном расположении
for _ in range(100): # количество попыток
orientation = random.choice(['horizontal', 'vertical'])
row = random.randint(0, 5)
col = random.randint(0, 5)
if orientation == 'horizontal' and can_place_horizontal(grid, word, row, col):
place_horizontal(grid, word, row, col)
placed = True
break
elif orientation == 'vertical' and can_place_vertical(grid, word, row, col):
place_vertical(grid, word, row, col)
placed = True
break
return grid
# Функция для заполнения пустых ячеек случайными буквами
def fill_empty_cells(grid):
alphabet = 'абвгдежзийклмнопрстуфхцчшщъыьэюя'
for i in range(len(grid)):
for j in range(len(grid[i])):
if grid[i][j] is None:
grid[i][j] = random.choice(alphabet)
# Основной код
words = ['миллион', 'красота', 'дорога', 'здание', 'голос', 'класс'] # ваш список слов
grid = create_word_matrix(words)
fill_empty_cells(grid)
# Печать матрицы
for row in grid:
print(' '.join(row))
```
### Описание кода:
1. **Функции проверки и размещения слов**:
- `can_place_horizontal()` и `can_place_vertical()` проверяют, можно ли разместить слово в нужном направлении.
- `place_horizontal()` и `place_vertical()` фактически размещают слово в матрице.
2. **Основная функция создания матрицы**:
- `create_word_matrix()` создает пустую матрицу и размещает в ней слова случайным образом, пытаясь до 100 раз для каждого слова (можно увеличить количество попыток для повышении вероятности успешного размещения).
3. **Заполнение пустых ячеек**:
- `fill_empty_cells()` заполняет оставшиеся пустые ячейки случайными буквами из русского алфавита.
4. **Вывод**:
- Матрица выводится на экран в читабельном формате.
Этот код создает матрицу размером 6x6, заполненную заданными словами, и случайными буквами в оставшихся ячейках. Вы можете изменить список слов на свои нужды, и алгоритм будет работать для них.