# HG changeset patch
# User Quintillus
# Date 1639638289 18000
# Thu Dec 16 02:04:49 2021 -0500
# Node ID 9d365c3adb4db416b423eb803868146b862b7e09
# Parent 06570778fc64b5796e29cce8d3f4ccb4db3ac8ee
Day 2 Silver.
Dunno why I'm doing this year's puzzle in Java. Kotlin in 2020 was kinda nice, though I didn't wind up writing any Kotlin in 2021. I've been writing mostly C# lately and that's also nice.
But this works.
diff --git a/Java/data/day2.txt b/Java/data/day2.txt
new file mode 100644
--- /dev/null
+++ b/Java/data/day2.txt
@@ -0,0 +1,1000 @@
+forward 1
+down 5
+down 6
+down 2
+forward 8
+up 3
+up 2
+down 2
+forward 9
+forward 7
+down 2
+forward 5
+down 2
+forward 2
+forward 1
+down 8
+forward 5
+down 6
+up 9
+down 7
+forward 6
+forward 7
+forward 8
+up 3
+down 8
+forward 9
+forward 5
+forward 2
+down 3
+down 3
+down 6
+down 6
+down 8
+down 4
+forward 1
+up 9
+down 7
+up 6
+down 2
+down 8
+forward 1
+forward 7
+forward 4
+forward 1
+forward 7
+down 1
+down 9
+forward 6
+forward 6
+forward 7
+forward 3
+up 7
+forward 7
+up 1
+forward 3
+forward 4
+up 4
+forward 6
+down 8
+down 7
+forward 4
+up 6
+up 8
+down 5
+down 6
+forward 2
+forward 7
+forward 5
+forward 4
+down 5
+down 8
+down 4
+down 4
+down 3
+forward 3
+down 8
+forward 7
+up 6
+down 3
+down 7
+down 3
+forward 2
+up 8
+down 7
+down 6
+down 3
+up 5
+up 4
+down 2
+down 5
+up 9
+down 8
+up 7
+up 8
+forward 7
+down 9
+up 5
+down 5
+down 5
+up 4
+down 4
+up 3
+down 1
+down 4
+down 7
+forward 2
+forward 9
+up 8
+down 8
+forward 6
+forward 8
+down 6
+down 2
+forward 2
+forward 7
+up 7
+down 4
+forward 1
+down 4
+forward 2
+up 3
+forward 8
+forward 7
+forward 8
+down 2
+down 9
+down 5
+forward 7
+down 7
+forward 8
+forward 2
+up 2
+forward 9
+down 3
+up 7
+forward 2
+down 4
+up 3
+up 8
+forward 4
+forward 4
+forward 3
+up 3
+forward 5
+forward 5
+down 9
+down 4
+up 2
+down 8
+down 5
+down 8
+up 7
+down 3
+down 7
+up 9
+down 7
+up 5
+down 5
+forward 2
+forward 2
+forward 6
+down 4
+up 3
+forward 1
+forward 3
+forward 4
+down 2
+forward 2
+down 1
+down 2
+down 3
+forward 8
+forward 1
+down 5
+forward 3
+up 2
+down 2
+forward 3
+forward 1
+up 4
+up 1
+up 2
+forward 4
+forward 8
+down 7
+forward 2
+down 8
+forward 6
+forward 3
+up 7
+down 3
+down 3
+forward 7
+forward 9
+down 8
+down 8
+up 1
+up 8
+down 5
+up 3
+forward 6
+forward 4
+forward 8
+up 4
+down 6
+forward 2
+forward 8
+down 1
+up 5
+down 4
+forward 5
+up 1
+forward 2
+down 9
+down 2
+forward 8
+up 3
+up 7
+forward 3
+forward 4
+down 7
+up 3
+down 7
+forward 7
+up 1
+down 3
+down 5
+down 7
+forward 5
+down 1
+up 9
+forward 1
+down 6
+up 4
+down 1
+forward 7
+forward 2
+down 2
+forward 2
+down 7
+down 4
+down 7
+down 9
+down 6
+down 2
+up 6
+forward 8
+down 2
+down 1
+down 8
+down 8
+down 1
+down 7
+forward 4
+forward 1
+down 2
+down 1
+up 2
+down 5
+forward 3
+forward 7
+forward 9
+up 5
+down 7
+down 3
+forward 3
+down 4
+forward 6
+forward 1
+down 6
+up 5
+up 6
+down 9
+forward 9
+forward 5
+down 3
+forward 5
+up 4
+down 4
+down 6
+forward 2
+forward 2
+down 5
+down 1
+forward 3
+forward 5
+up 5
+down 1
+down 5
+down 3
+down 4
+down 2
+down 2
+forward 5
+down 1
+down 4
+down 6
+forward 4
+down 1
+down 1
+down 7
+forward 1
+down 5
+forward 6
+forward 7
+forward 3
+down 6
+forward 8
+down 8
+down 3
+up 9
+forward 3
+up 5
+forward 9
+forward 3
+forward 5
+down 3
+down 7
+down 5
+up 5
+down 1
+up 5
+down 5
+down 9
+down 4
+down 2
+down 2
+up 2
+up 1
+forward 2
+forward 4
+up 5
+down 1
+forward 6
+up 7
+up 5
+down 5
+forward 4
+down 1
+up 4
+down 2
+forward 3
+forward 4
+down 4
+down 8
+down 4
+up 3
+forward 6
+forward 3
+forward 1
+up 3
+forward 6
+down 1
+up 5
+down 5
+down 9
+down 9
+down 4
+forward 9
+down 6
+down 6
+forward 2
+up 7
+down 4
+down 4
+down 3
+up 1
+down 4
+up 2
+forward 9
+down 2
+down 6
+down 6
+up 5
+down 7
+down 6
+down 9
+down 8
+forward 5
+down 6
+up 3
+down 8
+up 3
+forward 5
+down 1
+forward 4
+forward 3
+down 9
+down 4
+forward 8
+forward 8
+up 4
+forward 7
+up 5
+down 9
+down 2
+forward 6
+down 4
+forward 9
+up 1
+down 7
+down 3
+forward 6
+up 7
+forward 2
+forward 1
+down 9
+up 4
+forward 2
+forward 6
+forward 9
+forward 9
+down 7
+forward 4
+down 2
+forward 1
+forward 8
+down 7
+down 1
+forward 5
+forward 5
+down 8
+up 8
+up 1
+forward 2
+down 8
+forward 6
+forward 1
+forward 2
+forward 7
+down 3
+forward 5
+up 6
+up 8
+down 7
+forward 2
+forward 5
+down 5
+forward 8
+down 6
+down 3
+up 2
+down 7
+forward 5
+down 4
+forward 3
+up 7
+up 6
+forward 4
+forward 7
+forward 6
+down 4
+forward 5
+up 3
+up 5
+down 8
+forward 7
+forward 2
+forward 3
+up 4
+down 1
+up 2
+up 1
+forward 6
+up 3
+down 3
+forward 7
+down 6
+forward 9
+forward 9
+down 7
+forward 1
+down 9
+down 9
+forward 8
+up 9
+up 7
+up 4
+forward 4
+down 3
+down 4
+forward 4
+forward 5
+down 2
+down 7
+down 1
+forward 7
+down 6
+down 6
+forward 3
+up 1
+forward 4
+down 5
+up 7
+up 3
+up 9
+forward 8
+up 4
+forward 2
+down 2
+down 2
+up 8
+forward 1
+forward 3
+forward 7
+down 7
+up 5
+down 3
+down 4
+down 6
+forward 5
+down 1
+forward 5
+down 4
+forward 8
+down 4
+forward 6
+forward 9
+down 5
+up 2
+down 2
+forward 1
+forward 5
+down 1
+down 4
+down 4
+up 6
+forward 7
+forward 2
+forward 9
+down 1
+forward 2
+forward 6
+forward 1
+up 9
+down 7
+down 8
+forward 3
+forward 5
+down 4
+forward 2
+forward 2
+up 8
+forward 3
+forward 8
+forward 5
+up 6
+forward 6
+forward 3
+down 4
+up 8
+down 3
+forward 4
+forward 3
+up 4
+forward 7
+down 9
+forward 3
+down 6
+forward 9
+down 8
+forward 6
+down 7
+down 1
+forward 9
+down 4
+forward 8
+forward 5
+forward 7
+up 5
+up 3
+down 8
+down 5
+down 2
+up 3
+up 7
+down 8
+forward 6
+forward 4
+forward 9
+forward 6
+forward 4
+forward 1
+down 1
+down 3
+up 3
+up 7
+down 9
+down 5
+forward 1
+forward 6
+forward 5
+down 9
+forward 9
+forward 5
+up 5
+forward 8
+forward 6
+forward 4
+down 4
+down 6
+down 1
+forward 1
+down 6
+forward 8
+down 3
+down 6
+down 5
+forward 3
+down 3
+down 8
+up 6
+forward 6
+down 6
+down 4
+down 8
+down 9
+down 3
+down 4
+down 5
+forward 4
+down 7
+down 8
+up 4
+forward 4
+down 9
+forward 1
+forward 1
+down 6
+up 3
+up 6
+down 8
+up 7
+forward 3
+down 6
+down 1
+down 4
+up 4
+down 9
+forward 1
+down 3
+up 1
+forward 8
+up 4
+up 6
+up 4
+down 4
+up 5
+up 3
+down 1
+down 6
+forward 9
+down 2
+forward 9
+forward 8
+down 2
+forward 8
+up 5
+forward 5
+forward 5
+forward 4
+up 8
+down 3
+forward 3
+down 4
+up 1
+forward 4
+up 7
+down 1
+down 4
+forward 1
+forward 9
+down 7
+forward 4
+down 5
+down 7
+forward 9
+down 2
+down 2
+down 1
+down 2
+forward 8
+down 6
+forward 5
+down 2
+down 1
+up 4
+forward 7
+down 1
+down 5
+down 7
+down 6
+down 6
+up 8
+forward 3
+up 8
+up 9
+down 2
+down 1
+down 5
+up 8
+forward 4
+forward 6
+down 2
+down 3
+forward 2
+forward 2
+forward 2
+forward 3
+down 7
+forward 3
+down 4
+up 1
+down 2
+down 9
+up 4
+down 8
+up 7
+down 6
+down 7
+down 6
+forward 6
+down 4
+forward 2
+down 7
+down 1
+forward 2
+forward 5
+forward 6
+down 1
+down 4
+forward 2
+down 4
+down 6
+down 8
+forward 9
+down 8
+forward 5
+down 7
+forward 5
+up 1
+down 1
+down 9
+down 3
+forward 3
+forward 5
+down 6
+forward 6
+up 3
+down 4
+down 4
+forward 7
+forward 3
+down 5
+down 3
+forward 7
+up 5
+forward 1
+down 6
+forward 1
+forward 9
+forward 9
+up 9
+forward 5
+up 5
+forward 6
+down 8
+up 4
+up 8
+forward 9
+forward 4
+down 5
+down 2
+down 9
+forward 3
+forward 6
+forward 2
+up 4
+down 4
+forward 3
+down 8
+down 3
+up 3
+forward 8
+down 4
+forward 4
+forward 4
+up 9
+down 1
+up 5
+up 5
+forward 8
+forward 4
+forward 5
+forward 1
+forward 3
+forward 8
+down 1
+forward 2
+forward 7
+down 4
+down 3
+down 4
+up 7
+forward 9
+forward 7
+down 8
+forward 2
+down 4
+up 9
+down 9
+down 9
+up 2
+down 9
+down 9
+down 6
+up 9
+up 6
+down 7
+forward 3
+forward 9
+forward 2
+down 4
+up 4
+forward 1
+up 1
+down 6
+down 3
+down 2
+up 6
+down 5
+down 8
+up 4
+forward 1
+down 1
+down 4
+down 8
+down 5
+forward 2
+down 5
+forward 3
+forward 1
+forward 9
+forward 4
+down 6
+down 4
+down 3
+forward 5
+forward 4
+down 1
+up 7
+down 4
+up 3
+forward 2
+forward 4
+up 2
+up 9
+forward 4
+down 5
+forward 9
+up 1
+forward 8
+down 9
+down 6
+down 6
+down 2
+down 2
+down 3
+forward 8
+down 2
+down 5
+forward 4
+up 3
+down 4
+up 6
+forward 7
+up 2
+down 6
+down 8
+forward 1
+down 8
+down 9
+down 2
+forward 3
+forward 9
+up 7
+down 1
+down 5
+up 7
+down 5
+up 8
+up 4
+down 6
+forward 1
+forward 6
+forward 9
+forward 6
+forward 6
+forward 9
+forward 8
+down 8
+down 8
+down 4
+down 7
+down 9
+up 9
+down 7
+down 2
+forward 2
+down 5
+down 3
+down 1
+down 4
+down 2
+down 1
+up 2
+forward 6
+down 3
+down 3
+down 1
+forward 8
+down 3
+forward 1
+forward 3
+down 1
+up 7
+down 9
+forward 5
+forward 8
+up 7
+down 4
+down 3
+down 1
+forward 2
+forward 9
+up 5
+down 2
+forward 6
+forward 6
+forward 2
+forward 1
+forward 1
+down 9
+forward 6
+forward 6
+down 2
+down 6
+up 5
+forward 5
+up 4
+forward 4
+down 2
+down 2
+down 7
+down 1
+down 4
+forward 3
+forward 3
+up 8
+down 8
+forward 5
+up 4
+up 9
+up 6
+up 6
+down 7
+forward 2
+up 1
+forward 2
+forward 4
+forward 4
+forward 2
+forward 4
+down 6
+down 3
+forward 9
+forward 3
+down 2
+forward 6
+forward 6
+forward 4
+forward 8
+up 1
+down 1
+forward 1
+down 7
+up 6
+up 8
+down 1
+down 4
+down 3
+up 4
+forward 4
+forward 5
+down 5
+down 8
+up 7
+down 2
+down 6
+forward 5
\ No newline at end of file
diff --git a/Java/pom.xml b/Java/pom.xml
--- a/Java/pom.xml
+++ b/Java/pom.xml
@@ -10,4 +10,11 @@
1.8
1.8
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ 5.5.2
+
+
\ No newline at end of file
diff --git a/Java/src/main/java/com/ajtjp/advent2021/SubPiloting.java b/Java/src/main/java/com/ajtjp/advent2021/SubPiloting.java
new file mode 100644
--- /dev/null
+++ b/Java/src/main/java/com/ajtjp/advent2021/SubPiloting.java
@@ -0,0 +1,31 @@
+
+package com.ajtjp.advent2021;
+
+import java.util.Scanner;
+
+/**
+ *
+ * @author Andrew
+ */
+public class SubPiloting {
+ public static int Silver(Scanner scanner) {
+ int forward = 0;
+ int depth = 0;
+ while (scanner.hasNextLine()) {
+ String nextLine = scanner.nextLine();
+ String[] parts = nextLine.split(" ");
+ String command = parts[0];
+ Integer distance = Integer.parseInt(parts[1]);
+ if (command.equals("forward")) {
+ forward += distance;
+ }
+ else if (command.equals("up")) {
+ depth -= distance;
+ }
+ else if (command.equals("down")) {
+ depth += distance;
+ }
+ }
+ return forward * depth;
+ }
+}
diff --git a/Java/src/test/java/com/ajtjp/advent2021/SubPilotingTest.java b/Java/src/test/java/com/ajtjp/advent2021/SubPilotingTest.java
new file mode 100644
--- /dev/null
+++ b/Java/src/test/java/com/ajtjp/advent2021/SubPilotingTest.java
@@ -0,0 +1,35 @@
+
+package com.ajtjp.advent2021;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.Scanner;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import org.junit.jupiter.api.Test;
+
+/**
+ *
+ * @author Andrew
+ */
+public class SubPilotingTest {
+ @Test
+ public void testSampleInput_Silver() throws Exception {
+ String basicData =
+"forward 5\n" +
+"down 5\n" +
+"forward 8\n" +
+"up 3\n" +
+"down 8\n" +
+"forward 2";
+ Scanner scanner = new Scanner(basicData);
+ int result = SubPiloting.Silver(scanner);
+ assertEquals(150, result);
+ }
+
+ @Test
+ public void testSilver() throws FileNotFoundException {
+ Scanner scanner = new Scanner(new File("data/day2.txt"));
+ int answer = SubPiloting.Silver(scanner);
+ assertEquals(1947824, answer);
+ }
+}