Skip to content

Commit 37b4783

Browse files
committed
Merge remote-tracking branch 'remotes/origin/DFSMethod_getAllAvailableSteps' into DFSmethods
2 parents ba46bf6 + fe6709c commit 37b4783

File tree

2 files changed

+14
-13
lines changed

2 files changed

+14
-13
lines changed

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44
import org.slf4j.Logger;
55
import org.slf4j.LoggerFactory;
66

7-
import java.util.ArrayList;
8-
import java.util.List;
9-
import java.util.Optional;
7+
import java.util.*;
108
import java.util.stream.Collectors;
119

1210
public 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
"\npizza: " + pizza
7777
+ "\nslices: " + output
78-
+ "\nsteps: " + steps);
79-
return steps;
78+
+ "\nsteps: " + groupedSteps);
79+
return groupedSteps;
8080
}
8181

8282
public static Slice performStep(Pizza pizza, List<Step> steps) {

src/test/java/com/google/hashcode/utils/DFSMethodsTest.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
package com.google.hashcode.utils;
22

3-
import com.google.hashcode.entity.Cell;
4-
import com.google.hashcode.entity.Ingredient;
5-
import com.google.hashcode.entity.Pizza;
6-
import com.google.hashcode.entity.Slice;
3+
import com.google.hashcode.entity.*;
74
import org.junit.Test;
85

96
import java.io.File;
107
import java.io.IOException;
118
import java.util.ArrayList;
129
import java.util.Arrays;
1310
import java.util.List;
11+
import java.util.Map;
1412

1513
import static com.google.hashcode.utils.InputFiles.EXAMPLE_INPUT_FILE_PATH;
1614
import static org.junit.Assert.assertEquals;
@@ -37,8 +35,11 @@ public void rightStep() throws Exception {
3735
@Test
3836
public void getAvailableSteps() throws IOException {
3937
Pizza pizza = new Pizza(new File(EXAMPLE_INPUT_FILE_PATH), IoUtils.parsePizza(EXAMPLE_INPUT_FILE_PATH), IoUtils.parseSliceInstructions(EXAMPLE_INPUT_FILE_PATH));
40-
assertEquals(8, DFSMethods.
41-
getAvailableSteps(pizza, DFSMethods.cutAllStartPositions(pizza)).size());
38+
Map<Slice, List<Step>> actualMap = DFSMethods.getAvailableSteps(pizza, DFSMethods.cutAllStartPositions(pizza));
39+
assertEquals(3, actualMap.keySet().size());
40+
assertEquals(3, actualMap.get(new Slice(new Cell(1,1, Ingredient.MUSHROOM))).size());
41+
assertEquals(2, actualMap.get(new Slice(new Cell(1,2, Ingredient.MUSHROOM))).size());
42+
assertEquals(3, actualMap.get(new Slice(new Cell(1,3, Ingredient.MUSHROOM))).size());
4243
}
4344

4445
@Test

0 commit comments

Comments
 (0)