Skip to content

Commit 1cd3766

Browse files
committed
DFS_getAllAvaliableSteps. Change validation for checking all available steps.
1 parent fe6709c commit 1cd3766

File tree

3 files changed

+25
-8
lines changed

3 files changed

+25
-8
lines changed

src/main/java/com/google/hashcode/entity/Slice.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@ public String toString() {
6161
return cells.toString();
6262
}
6363

64+
65+
/**
66+
* check if slice valid for current pizza.
67+
* @param pizza
68+
* @return
69+
*/
6470
public boolean isValid(Pizza pizza) {
6571
//TODO check rectangularity
6672
int mushroomsNumber = this.cells.stream()

src/main/java/com/google/hashcode/entity/Step.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.google.hashcode.entity;
22

3+
import java.util.List;
4+
35
/**
46
* Step as an entity is a slice tha can be added to a particular slice inside a particular pizza, considering
57
* pizza's slice instructions
@@ -26,4 +28,13 @@ public String toString() {
2628
'}';
2729
}
2830

31+
public static boolean isValid(Pizza pizza, Slice startSlice, Slice checkedSlice){
32+
if( pizza.containsCells(checkedSlice) &&
33+
startSlice.cells.size() + checkedSlice.cells.size() <= pizza.getSliceInstruction().getMaxNumberOfCellsPerSlice()){
34+
return true;
35+
}
36+
37+
return false;
38+
}
39+
2940
}

src/main/java/com/google/hashcode/utils/DFSMethods.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,26 +55,26 @@ public static Optional<Slice> rightStep(Pizza pizza, Slice slice) {
5555
* For each slice find all available steps. We DON'T change the pizza on this stage
5656
*
5757
* @param pizza given pizza
58-
* @param output given slices in the pizza
58+
* @param startPos given slices in the pizza
5959
* @return available steps
6060
*/
61-
public static Map<Slice, List<Step>> getAvailableSteps(Pizza pizza, List<Slice> output) {
61+
public static Map<Slice, List<Step>> getAvailableSteps(Pizza pizza, List<Slice> startPos) {
6262
Map<Slice, List<Step>> groupedSteps = new HashMap<>();
63-
for (Slice slice : output) {
63+
for (Slice slice : startPos) {
6464
List<Step> steps = new ArrayList<>();
6565
Slice stepLeftDelta = slice.generateStepDeltaLeft();
6666
Slice stepRightDelta = slice.generateStepDeltaRight();
6767
Slice stepAboveDelta = slice.generateStepDeltaAbove();
6868
Slice stepBelowDelta = slice.generateStepDeltaBelow();
69-
if (pizza.containsCells(stepLeftDelta)) steps.add(new Step(slice, stepLeftDelta));
70-
if (pizza.containsCells(stepRightDelta)) steps.add(new Step(slice, stepRightDelta));
71-
if (pizza.containsCells(stepAboveDelta)) steps.add(new Step(slice, stepAboveDelta));
72-
if (pizza.containsCells(stepBelowDelta)) steps.add(new Step(slice, stepBelowDelta));
69+
if (Step.isValid(pizza, slice, stepLeftDelta)) steps.add(new Step(slice, stepLeftDelta));
70+
if (Step.isValid(pizza, slice, stepRightDelta)) steps.add(new Step(slice, stepRightDelta));
71+
if (Step.isValid(pizza, slice, stepAboveDelta)) steps.add(new Step(slice, stepAboveDelta));
72+
if (Step.isValid(pizza, slice, stepBelowDelta)) steps.add(new Step(slice, stepBelowDelta));
7373
groupedSteps.put(slice, steps);
7474
}
7575
LOGGER.info("available steps for" +
7676
"\npizza: " + pizza
77-
+ "\nslices: " + output
77+
+ "\nslices: " + startPos
7878
+ "\nsteps: " + groupedSteps);
7979
return groupedSteps;
8080
}

0 commit comments

Comments
 (0)