mirror of
https://github.com/Zormm/Advent-Of-Code-2022.git
synced 2026-02-26 07:26:51 +01:00
183 lines
5.3 KiB
Java
183 lines
5.3 KiB
Java
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');
|
|
*/
|
|
}
|
|
|
|
}
|