Skip to content

Commit 405266a

Browse files
committed
more Go solutions
1 parent a04a10d commit 405266a

File tree

16 files changed

+2155
-30
lines changed

16 files changed

+2155
-30
lines changed

README.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,18 @@ Puzzle | Stars |
1717
[Day 1: Historian Hysteria](https://adventofcode.com/2024/day/1) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day1/day1.rs) [![Python](./scripts/assets/python.png)](src/year2024/day1/day1.py) [![C](./scripts/assets/c.png)](src/year2024/day1/day1.c) [![C++](./scripts/assets/cpp.png)](src/year2024/day1/day1.cpp) [![Go](./scripts/assets/go.png)](src/year2024/day1/day1.go) [![Ruby](./scripts/assets/ruby.png)](src/year2024/day1/day1.rb) [![Perl](./scripts/assets/perl.png)](src/year2024/day1/day1.pl) [![Lua](./scripts/assets/lua.png)](src/year2024/day1/day1.lua) [![JS](./scripts/assets/javascript.png)](src/year2024/day1/day1.js) [![Bash](./scripts/assets/bash.png)](src/year2024/day1/day1.sh) [![Swift](./scripts/assets/swift.png)](src/year2024/day1/day1.swift) [![Java](./scripts/assets/java.png)](src/year2024/day1/day1.java) [![C#](./scripts/assets/csharp.png)](src/year2024/day1/day1.cs) [![SQLite](./scripts/assets/sqlite.png)](src/year2024/day1/day1.sql)
1818
[Day 2: Red-Nosed Reports](https://adventofcode.com/2024/day/2) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day2/day2.rs) [![Python](./scripts/assets/python.png)](src/year2024/day2/day2.py) [![Go](./scripts/assets/go.png)](src/year2024/day2/day2.go)
1919
[Day 3: Mull It Over](https://adventofcode.com/2024/day/3) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day3/day3.rs) [![Python](./scripts/assets/python.png)](src/year2024/day3/day3.py) [![Go](./scripts/assets/go.png)](src/year2024/day3/day3.go) [![Perl](./scripts/assets/perl.png)](src/year2024/day3/day3.pl)
20-
[Day 4: Ceres Search](https://adventofcode.com/2024/day/4) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day4/day4.rs) [![Python](./scripts/assets/python.png)](src/year2024/day4/day4.py)
21-
[Day 5: Print Queue](https://adventofcode.com/2024/day/5) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day5/day5.rs)
22-
[Day 6: Guard Gallivant](https://adventofcode.com/2024/day/6) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day6/day6.rs)
20+
[Day 4: Ceres Search](https://adventofcode.com/2024/day/4) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day4/day4.rs) [![Python](./scripts/assets/python.png)](src/year2024/day4/day4.py) [![Go](./scripts/assets/go.png)](src/year2024/day4/day4.go)
21+
[Day 5: Print Queue](https://adventofcode.com/2024/day/5) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day5/day5.rs) [![Go](./scripts/assets/go.png)](src/year2024/day5/day5.go)
22+
[Day 6: Guard Gallivant](https://adventofcode.com/2024/day/6) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day6/day6.rs) [![Go](./scripts/assets/go.png)](src/year2024/day6/day6.go)
2323
[Day 7: Bridge Repair](https://adventofcode.com/2024/day/7) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day7/day7.rs) [![Python](./scripts/assets/python.png)](src/year2024/day7/day7.py) [![Go](./scripts/assets/go.png)](src/year2024/day7/day7.go)
24-
[Day 8: Resonant Collinearity](https://adventofcode.com/2024/day/8) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day8/day8.rs) [![Python](./scripts/assets/python.png)](src/year2024/day8/day8.py)
25-
[Day 9: Disk Fragmenter](https://adventofcode.com/2024/day/9) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day9/day9.rs)
26-
[Day 10: Hoof It](https://adventofcode.com/2024/day/10) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day10/day10.rs)
24+
[Day 8: Resonant Collinearity](https://adventofcode.com/2024/day/8) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day8/day8.rs) [![Python](./scripts/assets/python.png)](src/year2024/day8/day8.py) [![Go](./scripts/assets/go.png)](src/year2024/day8/day8.go)
25+
[Day 9: Disk Fragmenter](https://adventofcode.com/2024/day/9) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day9/day9.rs) [![Go](./scripts/assets/go.png)](src/year2024/day9/day9.go)
26+
[Day 10: Hoof It](https://adventofcode.com/2024/day/10) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day10/day10.rs) [![Go](./scripts/assets/go.png)](src/year2024/day10/day10.go)
2727
[Day 11: Plutonian Pebbles](https://adventofcode.com/2024/day/11) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day11/day11.rs) [![Go](./scripts/assets/go.png)](src/year2024/day11/day11.go)
28-
[Day 12: Garden Groups](https://adventofcode.com/2024/day/12) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day12/day12.rs)
29-
[Day 13: Claw Contraption](https://adventofcode.com/2024/day/13) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day13/day13.rs) [![Rust](./scripts/assets/rust.png)](src/year2024/day13_z3/day13_z3.rs) [![Python](./scripts/assets/python.png)](src/year2024/day13_z3/day13.py)
28+
[Day 12: Garden Groups](https://adventofcode.com/2024/day/12) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day12/day12.rs) [![Go](./scripts/assets/go.png)](src/year2024/day12/day12.go)
29+
[Day 13: Claw Contraption](https://adventofcode.com/2024/day/13) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day13/day13.rs) [![Rust](./scripts/assets/rust.png)](src/year2024/day13_z3/day13_z3.rs) [![Python](./scripts/assets/python.png)](src/year2024/day13_z3/day13.py) [![Go](./scripts/assets/go.png)](src/year2024/day13/day13.go)
3030
[Day 14: Restroom Redoubt](https://adventofcode.com/2024/day/14) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day14/day14.rs) [![Python](./scripts/assets/python.png)](src/year2024/day14/day14.py) [🎁](src/year2024/day14/README.md)
31-
[Day 15: Warehouse Woes](https://adventofcode.com/2024/day/15) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day15/day15.rs) [🎁](src/year2024/day15/README.md)
31+
[Day 15: Warehouse Woes](https://adventofcode.com/2024/day/15) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day15/day15.rs) [![Go](./scripts/assets/go.png)](src/year2024/day15/day15.go) [🎁](src/year2024/day15/README.md)
3232
[Day 16: Reindeer Maze](https://adventofcode.com/2024/day/16) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day16/day16.rs) [🎁](src/year2024/day16/README.md)
3333
[Day 17: Chronospatial Computer](https://adventofcode.com/2024/day/17) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day17/day17.rs)
3434
[Day 18: RAM Run](https://adventofcode.com/2024/day/18) | ⭐⭐ | [![Rust](./scripts/assets/rust.png)](src/year2024/day18/day18.rs) [![C++](./scripts/assets/cpp.png)](src/year2024/day18/day18.cpp) [![Go](./scripts/assets/go.png)](src/year2024/day18/day18.go)

src/year2015/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Puzzle
2424
[Day 13: Knights of the Dinner Table](https://adventofcode.com/2015/day/13) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day13/day13.rs) [![Python](../../scripts/assets/python.png)](day13/day13.py)
2525
[Day 14: Reindeer Olympics](https://adventofcode.com/2015/day/14) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day14/day14.rs)
2626
[Day 15: Science for Hungry People](https://adventofcode.com/2015/day/15) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day15/day15.rs)
27-
[Day 16: Aunt Sue](https://adventofcode.com/2015/day/16) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day16/day16.rs) [![Python](../../scripts/assets/python.png)](day16/day16.py)
27+
[Day 16: Aunt Sue](https://adventofcode.com/2015/day/16) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day16/day16.rs) [![Python](../../scripts/assets/python.png)](day16/day16.py) [![Go](../../scripts/assets/go.png)](day16/day16.go)
2828
[Day 17: No Such Thing as Too Much](https://adventofcode.com/2015/day/17) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day17/day17.rs)
2929
[Day 18: Like a GIF For Your Yard](https://adventofcode.com/2015/day/18) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day18/day18.rs) [🎁](day18/README.md)
3030
[Day 19: Medicine for Rudolph](https://adventofcode.com/2015/day/19) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day19/day19.rs)

src/year2015/day16/day16.go

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
// [Day 16: Aunt Sue](https://adventofcode.com/2015/day/16)
2+
3+
package main
4+
5+
import (
6+
"fmt"
7+
"log"
8+
"os"
9+
"regexp"
10+
"strconv"
11+
"strings"
12+
"time"
13+
)
14+
15+
func solve(data []byte) (int, int) {
16+
lines := strings.Split(strings.TrimSpace(string(data)), "\n")
17+
aunts := make(map[string]map[string]int)
18+
19+
re := regexp.MustCompile(`Sue (\d+): (\w+): (\d+), (\w+): (\d+), (\w+): (\d+)`)
20+
21+
for _, line := range lines {
22+
matches := re.FindStringSubmatch(line)
23+
if len(matches) != 8 {
24+
continue
25+
}
26+
27+
sue := matches[1]
28+
aunt := make(map[string]int)
29+
30+
val1, _ := strconv.Atoi(matches[3])
31+
val2, _ := strconv.Atoi(matches[5])
32+
val3, _ := strconv.Atoi(matches[7])
33+
34+
aunt[matches[2]] = val1
35+
aunt[matches[4]] = val2
36+
aunt[matches[6]] = val3
37+
38+
aunts[sue] = aunt
39+
}
40+
41+
// Part 1
42+
part1 := 0
43+
for sue, aunt := range aunts {
44+
if getValue(aunt, "children", 3) != 3 {
45+
continue
46+
}
47+
if getValue(aunt, "cats", 7) != 7 {
48+
continue
49+
}
50+
if getValue(aunt, "samoyeds", 2) != 2 {
51+
continue
52+
}
53+
if getValue(aunt, "pomeranians", 3) != 3 {
54+
continue
55+
}
56+
if getValue(aunt, "akitas", 0) != 0 {
57+
continue
58+
}
59+
if getValue(aunt, "vizslas", 0) != 0 {
60+
continue
61+
}
62+
if getValue(aunt, "goldfish", 5) != 5 {
63+
continue
64+
}
65+
if getValue(aunt, "trees", 3) != 3 {
66+
continue
67+
}
68+
if getValue(aunt, "cars", 2) != 2 {
69+
continue
70+
}
71+
if getValue(aunt, "perfumes", 1) != 1 {
72+
continue
73+
}
74+
75+
part1, _ = strconv.Atoi(sue)
76+
break
77+
}
78+
79+
// Part 2
80+
part2 := 0
81+
for sue, aunt := range aunts {
82+
if getValue(aunt, "children", 3) != 3 {
83+
continue
84+
}
85+
// cats should be greater than
86+
if getValue(aunt, "cats", 7+1) <= 7 {
87+
continue
88+
}
89+
if getValue(aunt, "samoyeds", 2) != 2 {
90+
continue
91+
}
92+
// pomeranians should be fewer than
93+
if getValue(aunt, "pomeranians", 3-1) >= 3 {
94+
continue
95+
}
96+
if getValue(aunt, "akitas", 0) != 0 {
97+
continue
98+
}
99+
if getValue(aunt, "vizslas", 0) != 0 {
100+
continue
101+
}
102+
// goldfish should be fewer than
103+
if getValue(aunt, "goldfish", 5-1) >= 5 {
104+
continue
105+
}
106+
// trees should be greater than
107+
if getValue(aunt, "trees", 3+1) <= 3 {
108+
continue
109+
}
110+
if getValue(aunt, "cars", 2) != 2 {
111+
continue
112+
}
113+
if getValue(aunt, "perfumes", 1) != 1 {
114+
continue
115+
}
116+
117+
part2, _ = strconv.Atoi(sue)
118+
break
119+
}
120+
121+
return part1, part2
122+
}
123+
124+
func getValue(aunt map[string]int, key string, defaultValue int) int {
125+
if val, ok := aunt[key]; ok {
126+
return val
127+
}
128+
return defaultValue
129+
}
130+
131+
func main() {
132+
filename := "input.txt"
133+
elapsed := false
134+
135+
for i := 1; i < len(os.Args); i++ {
136+
arg := os.Args[i]
137+
if arg == "--elapsed" {
138+
elapsed = true
139+
} else if !strings.HasPrefix(arg, "-") {
140+
filename = arg
141+
}
142+
}
143+
144+
data, err := os.ReadFile(filename)
145+
if err != nil {
146+
log.Fatal(err)
147+
}
148+
149+
if elapsed {
150+
start := time.Now()
151+
result1, result2 := solve(data)
152+
duration := time.Since(start)
153+
154+
fmt.Println(result1)
155+
fmt.Println(result2)
156+
fmt.Printf("elapsed: %f ms\n", duration.Seconds()*1000.0)
157+
} else {
158+
result1, result2 := solve(data)
159+
160+
fmt.Println(result1)
161+
fmt.Println(result2)
162+
}
163+
}

src/year2024/README.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,18 @@ Puzzle | Stars |
1212
[Day 1: Historian Hysteria](https://adventofcode.com/2024/day/1) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day1/day1.rs) [![Python](../../scripts/assets/python.png)](day1/day1.py) [![C](../../scripts/assets/c.png)](day1/day1.c) [![C++](../../scripts/assets/cpp.png)](day1/day1.cpp) [![Go](../../scripts/assets/go.png)](day1/day1.go) [![Ruby](../../scripts/assets/ruby.png)](day1/day1.rb) [![Perl](../../scripts/assets/perl.png)](day1/day1.pl) [![Lua](../../scripts/assets/lua.png)](day1/day1.lua) [![JS](../../scripts/assets/javascript.png)](day1/day1.js) [![Bash](../../scripts/assets/bash.png)](day1/day1.sh) [![Swift](../../scripts/assets/swift.png)](day1/day1.swift) [![Java](../../scripts/assets/java.png)](day1/day1.java) [![C#](../../scripts/assets/csharp.png)](day1/day1.cs) [![SQLite](../../scripts/assets/sqlite.png)](day1/day1.sql)
1313
[Day 2: Red-Nosed Reports](https://adventofcode.com/2024/day/2) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day2/day2.rs) [![Python](../../scripts/assets/python.png)](day2/day2.py) [![Go](../../scripts/assets/go.png)](day2/day2.go)
1414
[Day 3: Mull It Over](https://adventofcode.com/2024/day/3) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day3/day3.rs) [![Python](../../scripts/assets/python.png)](day3/day3.py) [![Go](../../scripts/assets/go.png)](day3/day3.go) [![Perl](../../scripts/assets/perl.png)](day3/day3.pl)
15-
[Day 4: Ceres Search](https://adventofcode.com/2024/day/4) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day4/day4.rs) [![Python](../../scripts/assets/python.png)](day4/day4.py)
16-
[Day 5: Print Queue](https://adventofcode.com/2024/day/5) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day5/day5.rs)
17-
[Day 6: Guard Gallivant](https://adventofcode.com/2024/day/6) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day6/day6.rs)
15+
[Day 4: Ceres Search](https://adventofcode.com/2024/day/4) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day4/day4.rs) [![Python](../../scripts/assets/python.png)](day4/day4.py) [![Go](../../scripts/assets/go.png)](day4/day4.go)
16+
[Day 5: Print Queue](https://adventofcode.com/2024/day/5) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day5/day5.rs) [![Go](../../scripts/assets/go.png)](day5/day5.go)
17+
[Day 6: Guard Gallivant](https://adventofcode.com/2024/day/6) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day6/day6.rs) [![Go](../../scripts/assets/go.png)](day6/day6.go)
1818
[Day 7: Bridge Repair](https://adventofcode.com/2024/day/7) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day7/day7.rs) [![Python](../../scripts/assets/python.png)](day7/day7.py) [![Go](../../scripts/assets/go.png)](day7/day7.go)
19-
[Day 8: Resonant Collinearity](https://adventofcode.com/2024/day/8) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day8/day8.rs) [![Python](../../scripts/assets/python.png)](day8/day8.py)
20-
[Day 9: Disk Fragmenter](https://adventofcode.com/2024/day/9) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day9/day9.rs)
21-
[Day 10: Hoof It](https://adventofcode.com/2024/day/10) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day10/day10.rs)
19+
[Day 8: Resonant Collinearity](https://adventofcode.com/2024/day/8) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day8/day8.rs) [![Python](../../scripts/assets/python.png)](day8/day8.py) [![Go](../../scripts/assets/go.png)](day8/day8.go)
20+
[Day 9: Disk Fragmenter](https://adventofcode.com/2024/day/9) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day9/day9.rs) [![Go](../../scripts/assets/go.png)](day9/day9.go)
21+
[Day 10: Hoof It](https://adventofcode.com/2024/day/10) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day10/day10.rs) [![Go](../../scripts/assets/go.png)](day10/day10.go)
2222
[Day 11: Plutonian Pebbles](https://adventofcode.com/2024/day/11) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day11/day11.rs) [![Go](../../scripts/assets/go.png)](day11/day11.go)
23-
[Day 12: Garden Groups](https://adventofcode.com/2024/day/12) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day12/day12.rs)
24-
[Day 13: Claw Contraption](https://adventofcode.com/2024/day/13) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day13/day13.rs) [![Rust](../../scripts/assets/rust.png)](day13_z3/day13_z3.rs) [![Python](../../scripts/assets/python.png)](day13_z3/day13.py)
23+
[Day 12: Garden Groups](https://adventofcode.com/2024/day/12) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day12/day12.rs) [![Go](../../scripts/assets/go.png)](day12/day12.go)
24+
[Day 13: Claw Contraption](https://adventofcode.com/2024/day/13) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day13/day13.rs) [![Rust](../../scripts/assets/rust.png)](day13_z3/day13_z3.rs) [![Python](../../scripts/assets/python.png)](day13_z3/day13.py) [![Go](../../scripts/assets/go.png)](day13/day13.go)
2525
[Day 14: Restroom Redoubt](https://adventofcode.com/2024/day/14) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day14/day14.rs) [![Python](../../scripts/assets/python.png)](day14/day14.py) [🎁](day14/README.md)
26-
[Day 15: Warehouse Woes](https://adventofcode.com/2024/day/15) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day15/day15.rs) [🎁](day15/README.md)
26+
[Day 15: Warehouse Woes](https://adventofcode.com/2024/day/15) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day15/day15.rs) [![Go](../../scripts/assets/go.png)](day15/day15.go) [🎁](day15/README.md)
2727
[Day 16: Reindeer Maze](https://adventofcode.com/2024/day/16) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day16/day16.rs) [🎁](day16/README.md)
2828
[Day 17: Chronospatial Computer](https://adventofcode.com/2024/day/17) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day17/day17.rs)
2929
[Day 18: RAM Run](https://adventofcode.com/2024/day/18) | ⭐⭐ | [![Rust](../../scripts/assets/rust.png)](day18/day18.rs) [![C++](../../scripts/assets/cpp.png)](day18/day18.cpp) [![Go](../../scripts/assets/go.png)](day18/day18.go)

0 commit comments

Comments
 (0)