Skip to content
This repository was archived by the owner on Dec 28, 2024. It is now read-only.

Commit 71a8bc7

Browse files
committed
Add solution day 22 part 1
1 parent 93b7bbb commit 71a8bc7

File tree

2 files changed

+51
-2
lines changed

2 files changed

+51
-2
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ automatically rebuilt and redeployed every time the `common` module or their own
5454
| 06 | ⭐ ⭐ | 19 | ⭐ ⭐ |
5555
| 07 | ⭐ ⭐ | 20 | ⭐ ⭐ |
5656
| 08 | ⭐ ⭐ | 21 | |
57-
| 09 | ⭐ ⭐ | 22 | |
57+
| 09 | ⭐ ⭐ | 22 | |
5858
| 10 | ⭐ ⭐ | 23 | |
5959
| 11 | ⭐ ⭐ | 24 | |
6060
| 12 | ⭐ ⭐ | 25 | |

solutions/day22/main.go

+50-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,58 @@
11
package main
22

33
import (
4+
"fmt"
45
"github.com/terminalnode/adventofcode2024/common"
6+
"strconv"
7+
"strings"
58
)
69

710
func main() {
8-
common.Setup(22, nil, nil)
11+
common.Setup(22, part1, nil)
12+
}
13+
14+
func part1(
15+
input string,
16+
) string {
17+
secrets, err := parse(input)
18+
if err != nil {
19+
return fmt.Sprintf("Failed to parse input: %v", err)
20+
}
21+
22+
sum := 0
23+
for _, secret := range secrets {
24+
for n := 0; n < 2000; n++ {
25+
secret = evolveSecretNumber(secret)
26+
}
27+
sum += secret
28+
}
29+
30+
return fmt.Sprintf("Sum of all secret numbers after 2k rounds: %d", sum)
31+
}
32+
33+
func parse(
34+
input string,
35+
) ([]int, error) {
36+
lines := strings.Split(input, "\n")
37+
numbers := make([]int, 0, len(lines))
38+
for _, l := range lines {
39+
n, err := strconv.ParseInt(l, 10, 0)
40+
if err != nil {
41+
return numbers, err
42+
}
43+
numbers = append(numbers, int(n))
44+
}
45+
return numbers, nil
46+
}
47+
48+
func evolveSecretNumber(
49+
secretNumber int,
50+
) int {
51+
secretNumber = pruneNumber((secretNumber * 64) ^ secretNumber)
52+
secretNumber = pruneNumber((secretNumber / 32) ^ secretNumber)
53+
return pruneNumber((secretNumber * 2048) ^ secretNumber)
54+
}
55+
56+
func pruneNumber(n int) int {
57+
return n % 16777216
958
}

0 commit comments

Comments
 (0)