Skip to content
Snippets Groups Projects

Simple

Merged COUETOUX Basile requested to merge alaboure/firefighter-template:simple into main
1 file
+ 11
11
Compare changes
  • Side-by-side
  • Inline
@@ -58,23 +58,23 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
@@ -58,23 +58,23 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
}
}
public List<Position> updateToNextGeneration() {
public List<Position> updateToNextGeneration() {
List<Position> result = updateFirefighters();
List<Position> modifiedPositions = updateFirefighters();
result.addAll(updateFires());
modifiedPositions.addAll(updateFires());
step++;
step++;
return result;
return modifiedPositions;
}
}
private List<Position> updateFires() {
private List<Position> updateFires() {
List<Position> result = new ArrayList<>();
List<Position> modifiedPositions = new ArrayList<>();
if (step % 2 == 0) {
if (step % 2 == 0) {
List<Position> newFirePositions = new ArrayList<>();
List<Position> newFirePositions = new ArrayList<>();
for (Position fire : firePositions) {
for (Position fire : firePositions) {
newFirePositions.addAll(neighbors(fire));
newFirePositions.addAll(neighbors(fire));
}
}
firePositions.addAll(newFirePositions);
firePositions.addAll(newFirePositions);
result.addAll(newFirePositions);
modifiedPositions.addAll(newFirePositions);
}
}
return result;
return modifiedPositions;
}
}
@@ -84,22 +84,22 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
@@ -84,22 +84,22 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
}
}
private List<Position> updateFirefighters() {
private List<Position> updateFirefighters() {
List<Position> result = new ArrayList<>();
List<Position> modifiedPosition = new ArrayList<>();
List<Position> firefighterNewPositions = new ArrayList<>();
List<Position> firefighterNewPositions = new ArrayList<>();
for (Position firefighterPosition : firefighterPositions) {
for (Position firefighterPosition : firefighterPositions) {
Position newFirefighterPosition = neighborClosestToFire(firefighterPosition);
Position newFirefighterPosition = neighborClosestToFire(firefighterPosition);
firefighterNewPositions.add(newFirefighterPosition);
firefighterNewPositions.add(newFirefighterPosition);
extinguish(newFirefighterPosition);
extinguish(newFirefighterPosition);
result.add(firefighterPosition);
modifiedPosition.add(firefighterPosition);
result.add(newFirefighterPosition);
modifiedPosition.add(newFirefighterPosition);
List<Position> neighborFirePositions = neighbors(newFirefighterPosition).stream()
List<Position> neighborFirePositions = neighbors(newFirefighterPosition).stream()
.filter(firePositions::contains).toList();
.filter(firePositions::contains).toList();
for(Position firePosition : neighborFirePositions)
for(Position firePosition : neighborFirePositions)
extinguish(firePosition);
extinguish(firePosition);
result.addAll(neighborFirePositions);
modifiedPosition.addAll(neighborFirePositions);
}
}
firefighterPositions = firefighterNewPositions;
firefighterPositions = firefighterNewPositions;
return result;
return modifiedPosition;
}
}
@Override
@Override
Loading