- Echipele pot fi formate maxim 2 persoane.
- Participanţii trebuie să fie studenţi la una din facultăţile din Universitatea Politehnica Timişoara sau Universitatea de Vest, licenţă sau master.
- Participanţii trebuie să îşi asigure singuri laptop-ul (cel puţin unul pe echipă) pe care vor lucra în unul din limbajele de programare: Java, C++ sau Python.
- Timp de 20 de ore, cat durează competiţia, participanţii nu au dreptul să părăsească teritoriul Incuboxx mai mult de 15 min fără a anunţa pe cineva din organizatori, încălcarea acestei reguli, duce la descalificare.
- Participanţii pot să comunice între ei în timpul competiţiei şi au acces la documentaţie atât scrisă cât şi online.
- Participanţii nu au dreptul să comunice cu alte persoane care nu au fost înscrise în concurs în scopul de a fi ajutaţi să rezolve sarcina propusă.
- Plagiatul codului va duce la descalificarea echipei.
- Echipa câştigătoare va fi cea a cărui cod iese învingător iar locul 3 va fi ales de către un juriu pe baza unor criterii stabilite înainte.
- Dacă nu există suficiente echipe cu cod funcţional, echipa câştigătoare va fi desemnată de către juriu.
In a small village at the North Pole, organized as a rows x col matrix, the happy eskimos are working hard to build their beloved igloos. Their craftsmanship has been developed during entire generations, from father to son. They are very friendly and loving to each other, and like to live nearby one another, but they can’t survive in large groups.
On one unfortunate day, at this peacefully village a new tribe of people with bad intentions made their appearance, also with the desire to build as many igloos as they can and have a majority over the native population.
A few rules can be observed in the way these two tribes build and destroy igloos. Enemy igloos nearby will try to stop your tribe from spreading. Friendly igloos will help your tribe spread, but watch out for overpopulation!
For every empty space in the village, out of the eight neighbors, there are p1 friendly igloos (eskimos) and p2 enemy igloos, the future of that space is decided by calculating the difference between p1 and p2, that is p1 – p2. This difference we will simply call a cell’s Neighbours from this point on. The following rules are used by the two tribes:
- An igloo with fewer than two Neighbours can’t be sustained, caused by isolation (under-population) or the territory being contested by the enemy tribe.
- An igloo with two or three Neighbours thrives, and will continue to survive.
- An igloo with more than three Neighbours can’t be sustained, caused by agglomeration (over-population)
- On any empty space (where there is not an igloo) that has exactly three Neighbours, an igloo will be built (population).
- Each tribe can claim cells that are at most maxColonisationDistance away from a friendly cell, on which they will immediately build an igloo. If the cell does not accomplish the criteria for living, it will die immediately.
- Each tribe can only claim up to a maximum number of cellGainPerTurn per year.
- If two tribes claim the same square, they will battle there and the cell will remain empty.
Can you help establish the peace in the village and take over more land than your enemy tribe?
The matrix is composed of cells. A cell has x and y coordinates and can be either empty space or an igloo. Each cell has eight neighbors (vertically, horizontally and diagonally).
At the start of the game, the two players will start with 4 igloos each, which are arranged in a 2×2 square. These two squares will be at an equal distance to the left and right from each other.
On each game iteration, each player may select at most cellGainPerTurn empty cells on which they want to build an igloo. There are some limitations which fields can be claimed, such as limited distance from friendly igloos, maximum number of igloo constructions per turn or cell must be empty space. At the same time, the other player is doing the same.
Determining the winner
The winner is the player who after the last move has the highest average of igloos built. The average is calculated summing the number of igloos at each iteration and dividing it by the number of iterations.
Communicating with the Battleground
In the files that you receive at the start of the competition, there are methods that take care of receiving the data from the Battleground so you don’t have to work with JSON. Find these methods and functions in the utility folder of your respective programming language.
Similarly, there are also send() methods or functions. You must use these to try to claim a cell. You will send these as a list or array of pairs of integers (depending on the language). These integers correspond to the coordinates of the cell you wish to claim. But keep in mind that you may only claim up to cellGainPerTurn legal cells per turn!
The claim on a cell is considered legal if the cell is at most maxColonisationDistance away from a friendly cell and you claimed at most cellGainPerTurn cells in the same turn.
Each player gets his own personalized JSON message. For example “field” element has symbol “#” for friendly cell, that is player 1 cells for player 1 and player 2 cells for player 2. JSON is sent to players on each iteration and has the following elements:
JSON array consisting of row elements. Each one is a col character string(the elements are game field rows). ‘#’ represents friendly live cell, ‘O’ enemy live cell and ‘.’ dead cell.
Number of cells that can be activated by player in this turn (cannot go over maxCellCapacity)
Number of cells gained for activation each turn.
Maximum number of cells which can be stored for use. You could never have more cells than maxCellCapacity to activate in a single turn.
Furthest distance from a friendly cell that a cell can be claimed.
Current iteration. Starts from 0.
The maximum number of game iterations during a battle.
Number of milliseconds gained per turn. Players have limited time to execute their calculations.
Number of milliseconds player has this turn.
How to submit your solution
You may submit your solution using a USB Flash Drive. In case you do not have one, ask the organisers. Create a folder named “TeamNumber-Team Name” and add your source code in one of the following formats:
- .java for Java
- .py Source Code for Python
- .cpp Source Code for C++