Buenas tardes foro, un año más se celebra el evento de programación llamado
Advent of Code, en el que cada día desde el 1 de diciembre hasta el 25 se publican un par de problemas de programación.
Este hilo tiene el propósito de compartir nuestras soluciones de dichos problemas en distintos lenguajes de programación e ir solucionándolos entre todos.
Aquí dejo mi solución en Java.
Spoiler
package day1;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class Day1 {
private static final String [] NUMBERS = {"one","two","three","four","five","six","seven","eight","nine"};
private File input ;
public Day1(String input){
this.input = new File(input);
}
private String isAlphaNumber(String alphaNumber){
for (int i = 0; i < NUMBERS.length; i++) {
if(alphaNumber.contains(NUMBERS[i]))
return (i+1) + "";
}
return "0";
}
public int partOne(){
int sum = 0;
try(BufferedReader in = new BufferedReader(new FileReader(input))){
String line = "";
while((line = in.readLine()) != null){
String number = "";
for (int i = 0; i < line.length(); i++) {
if(Character.isDigit(line.charAt(i))){
number += line.charAt(i);
break;
}
}
for (int i = line.length()-1; i >=0 ; i--) {
if(Character.isDigit(line.charAt(i))){
number += line.charAt(i);
break;
}
}
sum += Integer.parseInt(number);
number = "";
}
}catch(IOException e){
System.err.println("Input not found");
}
return sum;
}
public int partTwo(){
int sum = 0;
try(BufferedReader in = new BufferedReader(new FileReader(input))){
String line = "";
while((line = in.readLine()) != null){
String number = "";
String alphaNumber = "";
for (int i = 0; i < line.length(); i++) {
if(Character.isDigit(line.charAt(i)) && isAlphaNumber(alphaNumber).equals("0")){
number += line.charAt(i);
break;
}else if(!isAlphaNumber(alphaNumber).equals("0")){
number += isAlphaNumber(alphaNumber);
break;
}else{
alphaNumber += line.charAt(i);
}
}
alphaNumber = "";
for (int i = line.length()-1; i >=0 ; i--) {
if(Character.isDigit(line.charAt(i)) && isAlphaNumber(alphaNumber).equals("0")){
number += line.charAt(i);
break;
}else if(!isAlphaNumber(alphaNumber).equals("0")){
number += isAlphaNumber(alphaNumber);
break;
}else{
alphaNumber = line.charAt(i) +alphaNumber;
}
}
sum += Integer.parseInt(number);
number = "";
}
}catch(IOException e){
System.err.println("Input not found");
}
return sum;
}
public static void main(String[] args) {
Day1 d1 = new Day1("inputs/day1/input.txt");
System.out.println(d1.partTwo());
}
}
A ver si este año consigo acabarlo, un saludo a todos.