tgoop.com/nlinker_rust/1811
Last Update:
Навеяно постом Ильи
https://www.tgoop.com/optozorax_dev/298
У меня есть история из детства. Когда я только учился программировать (я на самом деле до сих пор не умею😭), я решил сделать компьютерный аналог игры в 1000 с пятью кубиками, игральными костьми то есть.
Особенность этой игры в том, что после того, как были сгенерировано 5 случайных чисел, нужно было этот массив проверить на то, содержится ли там 3, 4, 5 одинаковых числа и если да, выяснить, что это за числа, кроме этого есть ещё комбинации 1,2,3,4,5
и 2,3,4,5,6
.
Если попытаться вычислить вхождение каждой комбинации в лоб получая на вход массив чисел, то это порождает необходимость в переборе всех комбинаций троек, потом четвёрок, кучи проверок и когда я тогда попытался продавить это решение, оно было кошмарным и я утонул в багах.
И однажды мне неожиданно пришла простая мысль: давайте сделаем массив длины 6, s = [s1, s2, s3, s4, s5, s6]
и в нём будем накапливать количество выпавших на текущем ходу единиц, двоек и так далее шестёрок. Этот препроцессинг сделал проверку условий элементарным, скажем, "выпало ли 4 единицы" нам нужно проверить выполнено ли s1 == 4
.
Прежние мои попытки я с радостью удалил и переписал проверку паттернов (и соответственно подсчёт очков). Я был так воодушевлён, что решил было сделать алгоритм игры, то есть бота, чтобы мне поиграть против компьютера. Увы, такого рода задачи уже были мне не по зубам вплоть до универа, когда я начал грызть "Программирование игр" Адельсона-Вельского и компании.
BY Linker Unsafe
Share with your friend now:
tgoop.com/nlinker_rust/1811