Професионална програма
Loading...
+ Нов въпрос
j.petrov_90 avatar j.petrov_90 258 Точки

Code vs Zombies Challenge

Здравейте, банда,

Отварям тема за Code vs Zombie Challenge-a, който стартирах на упражнението на 03.06.2021.
Задачата може да намерите на този линк:
https://www.codingame.com/multiplayer/optimization/code-vs-zombies

Тук може да обсъждаме възможни решения, идеи, подобрения и така нататък.
Ще помоля само да се въздържате от коментари тип "ето какво наприх аз 'линк към кода' ".
Идеята е да се съревноваваме един спрямо друг.
Това не значи, че не можем да обсъждаме идеи - даже напротив! :)

На занятието "Exam Preparation" ще видим кой е изкарал най-резултатен код и може да разгледаме решението му.
Стига разбира се даденият човек да има желание (най-малкото ние нямаме достъп до решението му освен ако той/тя не го сподели).

Ако ми остане време мога и аз да се включа със собствено решение.
Ако ли не - ще "участвам" с решението, което бях написал преди няколко години, когато имах опит сходен на Вашия.

Поздрави,
Нека най-добрият победи! (да застреля най-много зомбита)! 

Тагове:
3
C++ Advanced
j.petrov_90 avatar j.petrov_90 258 Точки

Кое смятате е по-добра стратегия?
Да се опитваш да спасяваш хората или да се опитваш да атакуваш зомбитата?

0
Axiomatik avatar Axiomatik 1353 Точки

Wow, Monte-Carlo and Decision-Tree, hopefully can implement that kind of code-logic in the near future. Otherwise solved with C#-solution that passes all tests, even though lacking elegance and dynamic decision-behaviour for particular situations!

Best approach: Civilian Count High => Offensive mode, Civilian Count Low => Defensive Mode

Thanks for the nice site !

1
j.petrov_90 avatar j.petrov_90 258 Точки

Monte-Carlo and min-max with alpha-beta pruning.

Sound awesome, but it is very hard to pull off properly.

 

As you said - try to start with a "no so elegant" solution and only then try to optimize.

 

What score do you manage to pull off?

0
07/06/2021 16:34:53
Axiomatik avatar Axiomatik 1353 Точки

ScoreBoard: 

10
50
80
30
90
4320
230
320
900
1040
210
230
3670
160
1870
300
2880
15360
20
1510
6180

TOTAL: 39460

Same code for all tests, no optimization for any particular scenario.

Most fun tests => 17 + 18 !

:-)

0
ViktorVidolov avatar ViktorVidolov 2 Точки

100% Отговор - PasteBin с код

Използвам карта за да вкарам всички хора вътре в нея и спасявам първият, до който мога да стигна преди зомбито. За жалост има доста оптимизации, които ще трябва да направя.

 

0
16/06/2021 01:08:31
Axiomatik avatar Axiomatik 1353 Точки

First try to optimize Run 'n Gun strategy for the basic tests, where you just have to fend off some Zombie-wave. After that, try to work out an additional stratgey, where the player only focuses on defending civilians to pass the mission (see Cross + Rectangle tests). At the end, you can work at an additional Combo-logic to boost your points, but this will require either a random movement pattern (which sometimes work and sometimes doesn't) or a more complicated calculation of all Zombie-positions allowing the player to attack the wave's center and start-off a Combo.

0
icowwww avatar icowwww 1343 Точки

Здравей,

Отделих малко време да опитам да напиша нещо на C#. Като първо го направих изцяло офанзивно- позиция спрямо следващата стъпка на най-близкото зомби. Изкарват се повече точки на първите тестове, но следващите не се минават.

След това го направих изцяло дефанзивно- позиция спрямо най-близкия човек. Като с приоритет бяха хората, която дистанция между зомбито и човека е по-голяма от дистанцията между Ash и човека минус дистанцията, която е нужна да бъде убит човека от зомбито. След това по приоритет бях хората по-близки до мен. С това минах всичките тестове. Като това са резултатите:

10
50
20
30
60
3600
230
320
590
2980
380
230
4430
160
970
200
3340
6320
20
120
7380
Sum 31440

След това установих, че в доста от тестовете Ash не върши нищо докато не дойдат зомбитата при хората. Затова за оптимизиране трябва да направи логика затова дали да се играе пасивно или агресивно. Мисля ако имам време да пробвам нещо от сорта- да се направи един масив с хора в опастност(зомби близко до тях на определена дистанция съобразено с killingDistance), на база на това колко елементи има масива да се определя дали да се ходи в посока най-близкото зомби или най-близкия човек, който е в опастност. 

 

 

0