package ch.epfl.maze.physical.stragegies.reducer; import ch.epfl.maze.util.Direction; import java.util.Set; import java.util.stream.Collectors; /** * A blind reducer filtering possibilities case by case. * * @author Pacien TRAN-GIRARD */ public interface BlindCaseReducer extends BlindChoiceReducer { /** * Checks if the given choice should be kept or excluded by the filter. * * @param choice A Direction * @return T(The filter should keep the given choice) */ boolean keepChoice(Direction choice); @Override default Set reduce(Set choices) { return choices .stream() .filter(choice -> this.keepChoice(choice)) .collect(Collectors.toSet()); } }