This commit is contained in:
Jona Krampe
2022-12-20 15:13:36 +00:00
parent e8a2145715
commit 4dafaa6540
43 changed files with 85 additions and 3 deletions
+182
View File
@@ -0,0 +1,182 @@
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
public class main {
static ArrayList<Stack<Character>> supplyStacksPart1;
static ArrayList<Stack<Character>> supplyStacksPart2;
public static void main(String[] args) {
supplyStacksPart1 = new ArrayList<Stack<Character>>(9);
supplyStacksPart2 = new ArrayList<Stack<Character>>(9);
for (int i = 0; i < 9; i++) {
supplyStacksPart1.add(new Stack<Character>());
supplyStacksPart2.add(new Stack<Character>());
}
populateArrayListOfStacks(supplyStacksPart1);
populateArrayListOfStacks(supplyStacksPart2);
int numberOfCratesToMove = 0,stackToBeMovedFrom = 0, stackToMoveTo = 0;
int line = 0;
int offset = 0;
Stack<Character> temporalHoldingOfCrates = new Stack<Character>();
try {
RandomAccessFile file = new RandomAccessFile("input.txt", "r");
String str;
while ((str = file.readLine()) != null) {
line++;
if (line >= 11) {
if (str.charAt(7) != ' ') {
numberOfCratesToMove = Integer.valueOf(str.substring(5,6));
offset = 0;
}
else {
numberOfCratesToMove = Integer.valueOf(str.substring(5,7));
offset = 1;
}
stackToBeMovedFrom = Integer.valueOf(str.substring(12+offset,13+offset));
stackToMoveTo = Integer.valueOf(str.substring(17+offset));
for (int i = 0; i < numberOfCratesToMove; i++) {
//Part 1
if (!supplyStacksPart1.get(stackToBeMovedFrom-1).empty()) {
supplyStacksPart1.get(stackToMoveTo-1).push(supplyStacksPart1.get(stackToBeMovedFrom-1).pop());
}
//Part 2
if (!supplyStacksPart2.get(stackToBeMovedFrom-1).empty()) {
temporalHoldingOfCrates.push(supplyStacksPart2.get(stackToBeMovedFrom-1).pop());
}
}
for (int i = 0; i < temporalHoldingOfCrates.size(); i++) {
supplyStacksPart2.get(stackToMoveTo-1).push(temporalHoldingOfCrates.pop());
}
for (int i = 0; i < 9; i++) {
if (!supplyStacksPart2.get(i).empty())
System.out.print(supplyStacksPart2.get(i).peek());
else
System.out.print(" ");
}
System.out.println();
}
}
System.out.print("Part 1: ");
for (int i = 0; i < 9; i++) {
if (!supplyStacksPart1.get(i).empty())
System.out.print(supplyStacksPart1.get(i).peek());
}
System.out.println("");
System.out.print("Part 2: ");
for (int i = 0; i < 9; i++) {
if (!supplyStacksPart2.get(i).empty())
System.out.print(supplyStacksPart2.get(i).peek());
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void populateArrayListOfStacks(ArrayList<Stack<Character>> arrayListOfStack) {
arrayListOfStack.get(0).push('Z');
arrayListOfStack.get(0).push('N');
arrayListOfStack.get(1).push('M');
arrayListOfStack.get(1).push('C');
arrayListOfStack.get(1).push('D');
arrayListOfStack.get(2).push('P');
/*
// Stack 1
arrayListOfStack.get(0).push('W');
arrayListOfStack.get(0).push('D');
arrayListOfStack.get(0).push('G');
arrayListOfStack.get(0).push('B');
arrayListOfStack.get(0).push('H');
arrayListOfStack.get(0).push('R');
arrayListOfStack.get(0).push('V');
// Stack 2
arrayListOfStack.get(1).push('J');
arrayListOfStack.get(1).push('N');
arrayListOfStack.get(1).push('G');
arrayListOfStack.get(1).push('C');
arrayListOfStack.get(1).push('R');
arrayListOfStack.get(1).push('F');
// Stack 3
arrayListOfStack.get(2).push('L');
arrayListOfStack.get(2).push('S');
arrayListOfStack.get(2).push('F');
arrayListOfStack.get(2).push('H');
arrayListOfStack.get(2).push('D');
arrayListOfStack.get(2).push('N');
arrayListOfStack.get(2).push('J');
// Stack 4
arrayListOfStack.get(3).push('J');
arrayListOfStack.get(3).push('D');
arrayListOfStack.get(3).push('S');
arrayListOfStack.get(3).push('V');
// Stack 5
arrayListOfStack.get(4).push('S');
arrayListOfStack.get(4).push('H');
arrayListOfStack.get(4).push('D');
arrayListOfStack.get(4).push('R');
arrayListOfStack.get(4).push('Q');
arrayListOfStack.get(4).push('W');
arrayListOfStack.get(4).push('N');
arrayListOfStack.get(4).push('V');
// Stack 6
arrayListOfStack.get(5).push('P');
arrayListOfStack.get(5).push('G');
arrayListOfStack.get(5).push('H');
arrayListOfStack.get(5).push('C');
arrayListOfStack.get(5).push('M');
// Stack 7
arrayListOfStack.get(6).push('F');
arrayListOfStack.get(6).push('J');
arrayListOfStack.get(6).push('B');
arrayListOfStack.get(6).push('G');
arrayListOfStack.get(6).push('L');
arrayListOfStack.get(6).push('Z');
arrayListOfStack.get(6).push('H');
arrayListOfStack.get(6).push('C');
// Stack 8
arrayListOfStack.get(7).push('S');
arrayListOfStack.get(7).push('J');
arrayListOfStack.get(7).push('R');
// Stack 9
arrayListOfStack.get(8).push('L');
arrayListOfStack.get(8).push('G');
arrayListOfStack.get(8).push('S');
arrayListOfStack.get(8).push('R');
arrayListOfStack.get(8).push('B');
arrayListOfStack.get(8).push('N');
arrayListOfStack.get(8).push('V');
arrayListOfStack.get(8).push('M');
*/
}
}