Глава 17 · Модель и правила
Индексы, строки и столбцы
Поле выглядит как таблица 3×3 — но в памяти это один список из девяти элементов.
Поле — плоский список из девяти элементов
0
1
2
3
4
5
6
7
8
Хотя визуально поле — таблица 3×3, в памяти это ОДИН плоский список из девяти
элементов (board[0] .. board[8]),
как и в разделе 17.3.
Индекс → строка и столбец
indeks_v_koordinaty.py
row = index // 3
column = index % 3
| index | row | column |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 0 | 1 |
| 2 | 0 | 2 |
| 3 | 1 | 0 |
| 4 | 1 | 1 |
| 5 | 1 | 2 |
| 6 | 2 | 0 |
| 7 | 2 | 1 |
| 8 | 2 | 2 |
Обратное направление: строка и столбец → индекс
koordinaty_v_indeks.py
index = row * 3 + column
Пригодится не только здесь
Формула
row * ширина + column — общий приём для любой прямоугольной сетки, хранящейся плоским списком (изображения, карты уровней, электронные таблицы).Практика: индекс, строка, столбец
Автоматическая проверка — прямое и обратное преобразование координат для всех 9 клеток