Олимпиадная задача - создать алгоритм ИИ для игры в Морской бой. Подробности на видео.
Дата отправки отчёта:
11 октября 2017 г.
Задание выполнено: за
3 час. 33 мин.
Чему научился:
Попрактиковался
Что было сложным:
Очень долго не мог найти время на прохождение урока ;)
Комментарии:
Очень классно! Я сделал 4 алгоритма! Один класс, и функция которыя определяет текущий режим (какой алгоритм будет работать). Вообщем сделал 4 режима и нашёл крупненькую уязвимость в коде ;))) 1) StupidRandom - Просто псевдо рандомные выстрелы в море ~90 ходов 2) SmartRandom - Умные выстрелы (если попал, то добивает и обделяет корабль, чтобы около него не стрелять) ~50 3) Hacker(=20 ходов) - Он знает где корабли и чётко по ним стреляет - это я сделал не поиском сингнатур в памяти(как Orange), а обычной уязвимостью - суть в том, что если к нам пришёл объект - Море sea, то почему бы его не переопределить, как Редактор sea? Я просто сделал функцию, которая получает корабли хитрым способом, по номерам и кладёт их в массив - вот это важную роль играет - ((Редактор)sea).КартаКораблей(Точка) - возвращает int(номер корабля). Хитрооо... Прикольно получилось и сделал быстро :) 4) StupidHacker - "притупленный" хакер - стреляет точно, но иногда "притупляется" - 1 к 3. В среднем ~40 ходов. Мне очень понравился результат. Больше всего времени потратил - на второй алгоритм ;) Больше всего мне понравился 3 ;)))))))))))))))) (На скриншоте 2 алгоритм)
Научился: Всему :)
По количеству вынесенной для меня пользы это задача оказалась продуктивнее чем все ранее решенные задачи вместе взятые. Безусловно этот факт обусловлен моим малым опытом и небольшим объёмом имеющихся знаний, но количество проблем с которыми я столкнулся, объём новой информации которую пришлось добыть и изучить для их решения, говорит только об исключительной полезности подобных задач. Трудности: Банально не хватило времени для реализации всех задумок. Не имея опыта решения подобных задач заложил неправильное время на её решение. В результате израсходовал его нерационально. Сначала несколько часов с тетрадью и карандашом подбирал оптимальный вариант стрельбы. Потом переключился в Студию и тут выяснилось, что я не совсем понимаю логику программы (ввиду скудности имеющихся знаний). Вместо того чтобы сразу приступить к реализации задуманного решения пришлось потратить несколько часов (!) на разбор логики программы, и выяснение способов вызова необходимых мне методов из уже имеющихся классов. В какой-то момент решил прекратить участие, т.к. не удавалось до конца разобраться. Закончилась суббота, сегодня на свежую голову с утра пришло озарение. По ходу пьесы пришлось упрощать решение, пошаговая отладка, сроки горят... красота :) Отличная задача, позволяет новичкам проверить себя в боевых условиях.