Hola,
esta es mi solución en java:
package aoc_2022;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
public class Day3 {
private static final File INPUT = new File("2022_inputs/2022_day3_input.txt");
private static final String LETTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
Day3(){
}
private String getRepeatedItem(String firstHalf, String secondHalf){
for (int i = 0; i < firstHalf.length(); i++) {
if(secondHalf.contains(firstHalf.charAt(i)+""))
return firstHalf.charAt(i)+"";
}
return "";
}
private String getRepeatedBadge(String firstPack, String secondPack, String thirdPack){
for (int i = 0; i < firstPack.length(); i++) {
if(secondPack.contains(firstPack.charAt(i)+"") && thirdPack.contains(firstPack.charAt(i)+""))
return firstPack.charAt(i) + "";
}
return "";
}
private int solvePartOne(){
int sum = 0;
try(BufferedReader br = new BufferedReader(new FileReader(INPUT))){
String line = "", firsHalf = "", secondHalf = "",repeatedItem = "";
while((line = br.readLine()) != null){
firsHalf = line.substring(0,(line.length()/2));
secondHalf = line.substring((line.length()/2));
repeatedItem = getRepeatedItem(firsHalf,secondHalf);
sum += LETTERS.indexOf(repeatedItem) + 1;
}
}catch (IOException e){
System.err.println("Error parsing input");
}
return sum;
}
private int solvePartTwo(){
int sum = 0, i = 0;
String packs [] = new String[3];
String line = "";
try(BufferedReader br = new BufferedReader(new FileReader(INPUT))){
while((line = br.readLine()) != null){
if(i == 3){
i = 0;
sum += LETTERS.indexOf(getRepeatedBadge(packs[0],packs[1],packs[2])) + 1;
packs[i] = line;
i++;
}else{
packs[i] = line;
i++;
}
}
sum += LETTERS.indexOf(getRepeatedBadge(packs[0],packs[1],packs[2])) + 1;
}catch (IOException e){
System.err.println("Error parsing input");
}
return sum;
}
public static void main(String[] args) {
Day3 d3 = new Day3();
System.out.println(d3.solvePartOne());
System.out.println(d3.solvePartTwo());
}
}