day02
This commit is contained in:
59
2025/go/day02/day02.go
Normal file
59
2025/go/day02/day02.go
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
package day02
|
||||||
|
|
||||||
|
import (
|
||||||
|
"adventofcode2025/utils"
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Part1(input string) int {
|
||||||
|
ranges := strings.Split(input, ",")
|
||||||
|
count := 0
|
||||||
|
for _, r := range ranges {
|
||||||
|
min_s, max_s := strings.Split(r, "-")[0], strings.Split(r, "-")[1]
|
||||||
|
min := utils.MustAtoi(min_s)
|
||||||
|
max := utils.MustAtoi(max_s)
|
||||||
|
for i := min; i <= max; i++ {
|
||||||
|
s := fmt.Sprintf("%d", i)
|
||||||
|
if len(s)%2 != 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if s[:len(s)/2] != s[len(s)/2:] {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
count += utils.MustAtoi(s)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count
|
||||||
|
}
|
||||||
|
|
||||||
|
func Part2(input string) int {
|
||||||
|
ranges := strings.Split(input, ",")
|
||||||
|
count := 0
|
||||||
|
for _, r := range ranges {
|
||||||
|
min_s, max_s := strings.Split(r, "-")[0], strings.Split(r, "-")[1]
|
||||||
|
min := utils.MustAtoi(min_s)
|
||||||
|
max := utils.MustAtoi(max_s)
|
||||||
|
for i := min; i <= max; i++ {
|
||||||
|
s := fmt.Sprintf("%d", i)
|
||||||
|
for numDigits := 1; numDigits <= len(s)/2; numDigits++ {
|
||||||
|
if len(s)%numDigits != 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
found := true
|
||||||
|
for j := 1; j < len(s)/numDigits; j++ {
|
||||||
|
if s[0:numDigits] != s[j*numDigits:(j+1)*numDigits] {
|
||||||
|
found = false
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if found {
|
||||||
|
count += utils.MustAtoi(s)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count
|
||||||
|
}
|
||||||
138
2025/go/main.go
138
2025/go/main.go
@@ -9,6 +9,10 @@ import (
|
|||||||
// "strings"
|
// "strings"
|
||||||
// "time"
|
// "time"
|
||||||
"adventofcode2025/day01"
|
"adventofcode2025/day01"
|
||||||
|
"adventofcode2025/day02"
|
||||||
|
"adventofcode2025/day03"
|
||||||
|
"adventofcode2025/day04"
|
||||||
|
|
||||||
"adventofcode2025/utils"
|
"adventofcode2025/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -22,72 +26,72 @@ func main() {
|
|||||||
case 1:
|
case 1:
|
||||||
fmt.Printf("part 1: %d\n", day01.Part1(utils.Readfile(d)))
|
fmt.Printf("part 1: %d\n", day01.Part1(utils.Readfile(d)))
|
||||||
fmt.Printf("part 2: %d\n", day01.Part2(utils.Readfile(d)))
|
fmt.Printf("part 2: %d\n", day01.Part2(utils.Readfile(d)))
|
||||||
// case 2:
|
case 2:
|
||||||
// fmt.Printf("part 1: %d\n", day02.Part1(utils.Readfile(d)))
|
fmt.Printf("part 1: %d\n", day02.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day02.Part2(utils.Readfile(d)))
|
fmt.Printf("part 2: %d\n", day02.Part2(utils.Readfile(d)))
|
||||||
// case 3:
|
case 3:
|
||||||
// fmt.Printf("part 1: %d\n", day03.Part1(utils.Readfile(d)))
|
fmt.Printf("part 1: %d\n", day03.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day03.Part2(utils.Readfile(d)))
|
fmt.Printf("part 2: %d\n", day03.Part2(utils.Readfile(d)))
|
||||||
// case 4:
|
case 4:
|
||||||
// fmt.Printf("part 1: %d\n", day04.Part1(utils.Readfile(d)))
|
fmt.Printf("part 1: %d\n", day04.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day04.Part2(utils.Readfile(d)))
|
fmt.Printf("part 2: %d\n", day04.Part2(utils.Readfile(d)))
|
||||||
// case 6:
|
// case 6:
|
||||||
// fmt.Printf("part 1: %d\n", day06.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %d\n", day06.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day06.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day06.Part2(utils.Readfile(d)))
|
||||||
// case 7:
|
// case 7:
|
||||||
// fmt.Printf("part 1: %d\n", day07.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %d\n", day07.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day07.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day07.Part2(utils.Readfile(d)))
|
||||||
// case 8:
|
// case 8:
|
||||||
// fmt.Printf("part 1: %d\n", day08.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %d\n", day08.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day08.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day08.Part2(utils.Readfile(d)))
|
||||||
// case 9:
|
// case 9:
|
||||||
// fmt.Printf("part 1: %d\n", day09.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %d\n", day09.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day09.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day09.Part2(utils.Readfile(d)))
|
||||||
// case 10:
|
// case 10:
|
||||||
// fmt.Printf("part 1: %d\n", day10.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %d\n", day10.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day10.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day10.Part2(utils.Readfile(d)))
|
||||||
// case 11:
|
// case 11:
|
||||||
// fmt.Printf("part 1: %d\n", day11.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %d\n", day11.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day11.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day11.Part2(utils.Readfile(d)))
|
||||||
// case 12:
|
// case 12:
|
||||||
// fmt.Printf("part 1: %d\n", day12.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %d\n", day12.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day12.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day12.Part2(utils.Readfile(d)))
|
||||||
// case 13:
|
// case 13:
|
||||||
// fmt.Printf("part 1: %d\n", day13.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %d\n", day13.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day13.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day13.Part2(utils.Readfile(d)))
|
||||||
// case 14:
|
// case 14:
|
||||||
// fmt.Printf("part 1: %d\n", day14.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %d\n", day14.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day14.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day14.Part2(utils.Readfile(d)))
|
||||||
// case 15:
|
// case 15:
|
||||||
// fmt.Printf("part 1: %d\n", day15.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %d\n", day15.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day15.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day15.Part2(utils.Readfile(d)))
|
||||||
// case 16:
|
// case 16:
|
||||||
// fmt.Printf("part 1: %d\n", day16.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %d\n", day16.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day16.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day16.Part2(utils.Readfile(d)))
|
||||||
// case 17:
|
// case 17:
|
||||||
// fmt.Printf("part 1: %s\n", day17.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %s\n", day17.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day17.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day17.Part2(utils.Readfile(d)))
|
||||||
// case 18:
|
// case 18:
|
||||||
// fmt.Printf("part 1: %d\n", day18.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %d\n", day18.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day18.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day18.Part2(utils.Readfile(d)))
|
||||||
// case 19:
|
// case 19:
|
||||||
// fmt.Printf("part 1: %d\n", day19.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %d\n", day19.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day19.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day19.Part2(utils.Readfile(d)))
|
||||||
// case 21:
|
// case 21:
|
||||||
// fmt.Printf("part 1: %d\n", day21.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %d\n", day21.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day21.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day21.Part2(utils.Readfile(d)))
|
||||||
// case 22:
|
// case 22:
|
||||||
// fmt.Printf("part 1: %d\n", day22.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %d\n", day22.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day22.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day22.Part2(utils.Readfile(d)))
|
||||||
// case 23:
|
// case 23:
|
||||||
// fmt.Printf("part 1: %d\n", day23.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %d\n", day23.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day23.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day23.Part2(utils.Readfile(d)))
|
||||||
// case 24:
|
// case 24:
|
||||||
// fmt.Printf("part 1: %d\n", day24.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %d\n", day24.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day24.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day24.Part2(utils.Readfile(d)))
|
||||||
// case 25:
|
// case 25:
|
||||||
// fmt.Printf("part 1: %d\n", day25.Part1(utils.Readfile(d)))
|
// fmt.Printf("part 1: %d\n", day25.Part1(utils.Readfile(d)))
|
||||||
// fmt.Printf("part 2: %d\n", day25.Part2(utils.Readfile(d)))
|
// fmt.Printf("part 2: %d\n", day25.Part2(utils.Readfile(d)))
|
||||||
default:
|
default:
|
||||||
panic(fmt.Errorf("no such day: %d", d))
|
panic(fmt.Errorf("no such day: %d", d))
|
||||||
}
|
}
|
||||||
@@ -97,7 +101,7 @@ func main() {
|
|||||||
|
|
||||||
// Reads day from os.Args.
|
// Reads day from os.Args.
|
||||||
func day() int {
|
func day() int {
|
||||||
latest := 0
|
latest := 3
|
||||||
if len(os.Args) == 1 {
|
if len(os.Args) == 1 {
|
||||||
return latest
|
return latest
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user