44import org .slf4j .Logger ;
55import org .slf4j .LoggerFactory ;
66
7- import java .util .ArrayList ;
8- import java .util .List ;
9- import java .util .Optional ;
7+ import java .util .*;
108import java .util .stream .Collectors ;
119
1210public abstract class DFSMethods {
@@ -60,9 +58,10 @@ public static Optional<Slice> rightStep(Pizza pizza, Slice slice) {
6058 * @param output given slices in the pizza
6159 * @return available steps
6260 */
63- public static List <Step > getAvailableSteps (Pizza pizza , List <Slice > output ) {
64- List <Step > steps = new ArrayList <>();
61+ public static Map < Slice , List <Step > > getAvailableSteps (Pizza pizza , List <Slice > output ) {
62+ Map < Slice , List <Step >> groupedSteps = new HashMap <>();
6563 for (Slice slice : output ) {
64+ List <Step > steps = new ArrayList <>();
6665 Slice stepLeftDelta = slice .generateStepDeltaLeft ();
6766 Slice stepRightDelta = slice .generateStepDeltaRight ();
6867 Slice stepAboveDelta = slice .generateStepDeltaAbove ();
@@ -71,12 +70,13 @@ public static List<Step> getAvailableSteps(Pizza pizza, List<Slice> output) {
7170 if (pizza .containsCells (stepRightDelta )) steps .add (new Step (slice , stepRightDelta ));
7271 if (pizza .containsCells (stepAboveDelta )) steps .add (new Step (slice , stepAboveDelta ));
7372 if (pizza .containsCells (stepBelowDelta )) steps .add (new Step (slice , stepBelowDelta ));
73+ groupedSteps .put (slice , steps );
7474 }
7575 LOGGER .info ("available steps for" +
7676 "\n pizza: " + pizza
7777 + "\n slices: " + output
78- + "\n steps: " + steps );
79- return steps ;
78+ + "\n steps: " + groupedSteps );
79+ return groupedSteps ;
8080 }
8181
8282 public static Slice performStep (Pizza pizza , List <Step > steps ) {
0 commit comments