This repository was archived by the owner on Dec 28, 2024. It is now read-only.
File tree 2 files changed +51
-2
lines changed
2 files changed +51
-2
lines changed Original file line number Diff line number Diff line change @@ -54,7 +54,7 @@ automatically rebuilt and redeployed every time the `common` module or their own
54
54
| 06 | ⭐ ⭐ | 19 | ⭐ ⭐ |
55
55
| 07 | ⭐ ⭐ | 20 | ⭐ ⭐ |
56
56
| 08 | ⭐ ⭐ | 21 | |
57
- | 09 | ⭐ ⭐ | 22 | |
57
+ | 09 | ⭐ ⭐ | 22 | ⭐ |
58
58
| 10 | ⭐ ⭐ | 23 | |
59
59
| 11 | ⭐ ⭐ | 24 | |
60
60
| 12 | ⭐ ⭐ | 25 | |
Original file line number Diff line number Diff line change 1
1
package main
2
2
3
3
import (
4
+ "fmt"
4
5
"github.com/terminalnode/adventofcode2024/common"
6
+ "strconv"
7
+ "strings"
5
8
)
6
9
7
10
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
9
58
}
You can’t perform that action at this time.
0 commit comments