File tree Expand file tree Collapse file tree 3 files changed +63
-0
lines changed Expand file tree Collapse file tree 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