Compare commits

...

2 Commits

Author SHA1 Message Date
d3abaf61a7 use division remainder as second criterion
All checks were successful
Build / build (push) Successful in 1m59s
2025-01-22 01:00:29 +01:00
d46e2d8163 correct food spawning algorithm 2025-01-22 00:59:55 +01:00
2 changed files with 12 additions and 1 deletions

View File

@ -107,7 +107,7 @@ async fn get_move(request: Json<Request>) -> response::Json<Response> {
let action = actions.into_iter().max_by_key(|action| { let action = actions.into_iter().max_by_key(|action| {
let action_data = action_data[usize::from(*action)]; let action_data = action_data[usize::from(*action)];
action_data.0 / action_data.1 (action_data.0 / action_data.1, action_data.0 % action_data.1)
}); });
if let Some(action) = action { if let Some(action) = action {

View File

@ -459,6 +459,17 @@ impl Board {
.iter() .iter()
.all(|snake| self.coord_to_linear(snake.tail()) != *i) .all(|snake| self.coord_to_linear(snake.tail()) != *i)
}) })
.filter(|i| {
self.snakes
.iter()
.flat_map(|snake| {
let head = snake.head();
enum_iterator::all::<Direction>()
.map(move |direction| head.wrapping_apply(direction))
.filter(|tile| self.is_in_bounds(*tile))
})
.all(|action| *i != self.coord_to_linear(action))
})
.filter(|i| !self.food[*i]) .filter(|i| !self.food[*i])
.choose_multiple(&mut thread_rng(), needed_food); .choose_multiple(&mut thread_rng(), needed_food);
for index in food_spots { for index in food_spots {