Сейчас отписалась на форуме конкурса. Конечно, сообщение перевела на английский язык в Гугле.
Спасибо за конкурс!
Было очень интересно играть.
У меня сначала не было никаких программ, я решала задачу вручную. Так было два месяца.
Потом товарищ по форуму написал программу по моему алгоритму полного перебора окончаний, это представлено здесь:
http://e-science.ru/forum/index.php?sho ... 028&st=120Я применяла эту программу к уже готовым решениям. Однако эта программа не в состоянии сделать полный перебор, когда остаётся много ходов до конца игры. Тогда я попросила товарища сделать ещё одну простенькую программку: случайный перебор. Эту программу можно применить с более глубоких уровней, когда до конца игры остаётся ещё достаточно много ходов.
Эти две программы работали у меня вместе: сначала случайный перебор, потом полный перебор окончаний. Исходными данными для этих программ были все решения, которые получены вручную за два месяца игры.
Пример
Решение в игре № 23 с результатом 3988 (получено вручную, без бонуса):
23:I5,L8,J7,L8,K6,O8,N6,M5,L9,L8,I11,L9,K11,L12,K12,L15,I14,O16,M15,M15,H15,G18,M16,M19,J19,J17,J18,I10,I11,I9,L6,M6,O8,N3,K5,J3,P4,O5,O3,N2,P2,O3,O2,L1,M2,M0,M3,I4,L3,O6,M1,O20,G18,K22,L21,H19,J19,J18,P22,N21,N20,P18,G12,J12,H13,G13,I13,N0,N1,O0,N0,L1,L0,L1,J16,O19,G22,J21,H20,L21,O20,N19,P19,O20,M21,P17,P14,M18,O19,O20,N17,O17,N1,M11,M10,O12,P12,M10,P11,O9,N8,O9,N9,P11,P8,O6,O4,O5,P5,O4,P3,O3,O1,P2,P2,P2,L0
Выбираю исходную позицию:
I5,L8,J7,L8,K6,O8,N6,M5,L9,L8,I11,L9,K11,L12,K12,L15,I14,O16,M15,M15,H15,G18,M16,M19,J19,J17,J18,I10,I11,I9,L6,M6,O8,N3,K5,J3,P4,O5,O3,N2,P2,O3,O2,L1,M2,M0,M3,I4,L3,O6,M1,O20,G18,K22,L21,H19,J19,J18,P22,N21,N20,P18,G12,J12,H13,G13,I13,N0,N1,O0,N0
Здесь 23 варианта первого хода.
Оцифровываю исходную позицию:
24,16,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,4,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,0,0,0,6,5,6,0,0,5,0,0,0,0,5,0,0,2,0,0,0,1,0,5,3,0,0,0,5,5,4,0,1,3,0,0,0,0,2,0,3,3,5,0,0,1,0,2,3,0,0,0,4,3,4,0,1,1,0,0,0,0,3,0,4,2,6,1,4,2,0,6,4,0,0,0,6,2,4,1,3,2,0,0,0,0,1,5,2,5,6,4,2,2,6,2,2,0,1,6,5,3,3,1,2,3,0,4,0,0,3,4,3,6,3,2,2,4,6,2,2,2,2,6,1,3,1,4,5,5,6,4,5,0,2,4,2,5,2,2,2,2,2,2,4,2,2,6,5,6,6,4,4,2,6,5,6,0,2,2,2,2,2,2,5,1,6,2,6,2,2,5,1,4,3,1,5,2,3,6,5,1,2,2,2,2,3,6,2,3,3,2,2,2,1,4,6,2,6,2,3,2,2,2,2,2,2,6,2,5,6,2,1,4,2,2,4,2,2,2,2,6,5,4,6,2,2,2,6,1,5,2,2,6,1,2,4,6,6,1,3,3,2,5,5,1,4,
и запускаю программу случайного перебора.
Программа быстро находит лучший вариант решения (два часа!). Теперь полученное решение дорабатываю по программе полного перебора окончаний.
И получаю решение с бонусом! Результат 4828.
23:I5,L8,J7,L8,K6,O8,N6,M5,L9,L8,I11,L9,K11,L12,K12,L15,I14,O16,M15,M15,H15,G18,M16,M19,J19,J17,J18,I10,I11,I9,L6,M6,O8,N3,K5,J3,P4,O5,O3,N2,P2,O3,O2,L1,M2,M0,M3,I4,L3,O6,M1,O20,G18,K22,L21,H19,J19,J18,P22,N21,N20,P18,G12,J12,H13,G13,I13,N0,N1,O0,N0,P20,L1,O21,I11,G17,K4,F22,G22,J16,L10,P4,N10,P2,P4,M8,L12,N7,F22,I1,L0,I21,O11,L14,O18,O5,P12,P18,L19,P15,O14,L12,P11,O12,P11,P11,P11,N11,P11,M14,P9,O10,O11,O10,O8,N8,O7,O3,P3,O2,O1,O1,P2,O0,P1,P1,O0,P0
У меня возникли проблемы в написании кода: определение одноцветных блоков, составление и хранение списков этих блоков и дальнейшая работа с элементами этих списков. Теоретически я это знаю, а реализовать не смогла. Товарищ на форуме оказал мне техническую поддержку, написав программы по моим алгоритмам.
Здесь приведён конкретный пример использования двух имеющихся у меня программ: случайного перебора и полного перебора окончаний.