jvm/p/AdventDay1_String.java
2024-12-23 14:41:20 -06:00

85 lines
2.4 KiB
Java

package p;
class AdventOfCode2024Day1 {
public static int part1() {
char[] string_input = {
'3', ' ', ' ', ' ', '4', '\n',
'4', ' ', ' ', ' ', '3', '\n',
'2', ' ', ' ', ' ', '5', '\n',
'1', ' ', ' ', ' ', '3', '\n',
'3', ' ', ' ', ' ', '9', '\n',
'3', ' ', ' ', ' ', '3', '\n',
};
int[] input = new int[100];
int nums = 0;
for (int i = 0; i < string_input.length; i++) {
switch (string_input[i]) {
case '0': input[nums++] = 0; break;
case '1': input[nums++] = 1; break;
case '2': input[nums++] = 2; break;
case '3': input[nums++] = 3; break;
case '4': input[nums++] = 4; break;
case '5': input[nums++] = 5; break;
case '6': input[nums++] = 6; break;
case '7': input[nums++] = 7; break;
case '8': input[nums++] = 8; break;
case '9': input[nums++] = 9; break;
default: break;
}
}
int[] left = new int[nums / 2];
int[] right = new int[nums / 2];
for (int i = 0; i < nums / 2; i++) {
left[i] = input[i * 2];
right[i] = input[i * 2 + 1];
}
// bubble sort left
while (true) {
boolean swapped = false;
for (int i = 1; i < left.length; i++) {
if (left[i - 1] > left[i]) {
int tmp = left[i - 1];
left[i - 1] = left[i];
left[i] = tmp;
swapped = true;
}
}
if (!swapped)
break;
}
// bubble sort right
while (true) {
boolean swapped = false;
for (int i = 1; i < right.length; i++) {
if (right[i - 1] > right[i]) {
int tmp = right[i - 1];
right[i - 1] = right[i];
right[i] = tmp;
swapped = true;
}
}
if (!swapped)
break;
}
int sum = 0;
for (int i = 0; i < left.length; i++) {
int dist = left[i] - right[i];
if (dist < 0)
dist = -dist;
sum += dist;
}
return sum;
}
public static void main(String[] args) {
System.out.println(part1());
}
}