Игра «Реверси» · Шаг 5 из 5
Бот любит углы
Жадный бот хватает ход, который переворачивает больше всего фишек, — и проигрывает. Опытный игрок знает: угол не перевернуть никогда, край — трудно, а клетка рядом с пустым углом отдаёт этот угол сопернику. Боту нужен вес клетки, а не только число перевёрнутых.
Что сделать
Выберите ход для бота: вес клетки плюс сколько она переворачивает — берите наибольшее.
Что приходит
varianty— непустой список пар((строка, столбец), сколько_перевернётся)на поле 8×8
Что вернуть
Клетку (строка, столбец) с наибольшей оценкой; при равных — ту, что раньше в списке.
Допишите функцию hod_bota в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В игре
Игра зовёт hod_bota на такте, когда ход за белыми, и ставит фишку туда, куда вы скажете. Решите шаг — и бот начнёт охотиться за углами вместо того, чтобы ходить в первую попавшуюся клетку.
Без этого шага: бот ходит в первую клетку из списка.
Варианты — клетка (2, 3) переворачивает одну фишку, угол (0, 0) — две. Оценка (2, 3): 0 + 1 = 1, угла: 100 + 2 = 102 — бот идёт в угол (0, 0).
hod_bota([((2, 3), 1), ((0, 0), 2)])
(0, 0)
Поле — 8×8, строки и столбцы от 0 до 7. Вес клетки:
- угол —
(0, 0),(0, 7),(7, 0),(7, 7)— 100; - клетка рядом с углом, по стороне или по диагонали, — −20 (у каждого угла три такие: у
(0, 0)это(0, 1),(1, 0)и(1, 1)); - остальная клетка края — в строке или столбце 0 или 7 — 10;
- все прочие — 0.
Оценка варианта — вес клетки плюс сколько фишек перевернётся. Верните клетку с наибольшей оценкой кортежем; если таких несколько — ту, что стоит в списке раньше. Правила проверяются в этом порядке: клетка (0, 1) — на краю, но рядом с углом, и её вес −20.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.