File tree 3 files changed +63
-0
lines changed 3 files changed +63
-0
lines changed Original file line number Diff line number Diff line change
1
+ 15887950
2
+ 16495136
3
+ 527345
4
+ 704524
5
+ 1553684
6
+ 12683156
7
+ 11100544
8
+ 12249484
9
+ 7753432
10
+ 5908254
Original file line number Diff line number Diff line change
1
+ 1
2
+ 10
3
+ 100
4
+ 2024
Original file line number Diff line number Diff line change
1
+ package main
2
+
3
+ import (
4
+ "bufio"
5
+ "fmt"
6
+ "os"
7
+
8
+ "github.com/fxnn/adventofcode2024/util"
9
+ )
10
+
11
+ func readInitialSecrets () []int {
12
+ var scanner = bufio .NewScanner (os .Stdin )
13
+
14
+ var secrets []int
15
+ for scanner .Scan () {
16
+ var line = scanner .Text ()
17
+ secrets = append (secrets , util .Atoi (line ))
18
+ }
19
+ if err := scanner .Err (); err != nil {
20
+ fmt .Fprintf (os .Stderr , "Error: %s\n " , err )
21
+ os .Exit (1 )
22
+ }
23
+
24
+ return secrets
25
+ }
26
+
27
+ func mixAndPrune (number , secret int ) int {
28
+ return (number ^ secret ) % 16777216
29
+ }
30
+
31
+ func calculateNextSecret (secret int ) int {
32
+ var step1 = mixAndPrune (secret * 64 , secret )
33
+ var step2 = mixAndPrune (step1 / 32 , step1 )
34
+ var step3 = mixAndPrune (step2 * 2048 , step2 )
35
+ return step3
36
+ }
37
+
38
+ func main () {
39
+ var sum int
40
+ for _ , initialSecret := range readInitialSecrets () {
41
+ var secret = initialSecret
42
+ for i := 0 ; i < 2000 ; i ++ {
43
+ secret = calculateNextSecret (secret )
44
+ }
45
+ sum += secret
46
+ fmt .Printf ("%d: %d\n " , initialSecret , secret )
47
+ }
48
+ fmt .Printf ("sum of secrets: %d\n " , sum )
49
+ }
You can’t perform that action at this time.
0 commit comments