File tree Expand file tree Collapse file tree 2 files changed +89
-0
lines changed
Expand file tree Collapse file tree 2 files changed +89
-0
lines changed Original file line number Diff line number Diff line change 1+ package main
2+
3+ import (
4+ "bufio"
5+ "fmt"
6+ "log"
7+ "os"
8+ "time"
9+ )
10+
11+ func day7 (file string ) (part1 , part2 int ) {
12+ f , err := os .Open (file )
13+ if err != nil {
14+ log .Fatal (err )
15+ }
16+ defer f .Close ()
17+ scanner := bufio .NewScanner (f )
18+
19+ scanner .Scan ()
20+ t := scanner .Bytes ()
21+ beams := map [int ]int {}
22+ for x , c := range t {
23+ if c == 'S' {
24+ beams [x ] = 1
25+ }
26+ }
27+
28+ part2 = 1
29+ for scanner .Scan () {
30+ t := scanner .Bytes ()
31+ rest := 0
32+ for x , c := range t {
33+ if c == '^' && beams [x ] > 0 {
34+ split := 0
35+ if x > 0 {
36+ beams [x - 1 ] += beams [x ]
37+ split += beams [x ]
38+ }
39+ if x < len (t ) {
40+ beams [x + 1 ] += beams [x ]
41+ split += beams [x ]
42+ }
43+ delete (beams , x )
44+ rest ++
45+ part1 ++
46+ }
47+ }
48+ if rest == 0 {
49+ sum := 0
50+ for _ , i := range beams {
51+ sum += i
52+ }
53+ // fmt.Println(beams, len(beams), sum)
54+ part2 = sum
55+ }
56+ }
57+
58+ return
59+ }
60+
61+ func main () {
62+ log .SetFlags (log .Lshortfile | log .LstdFlags )
63+ t1 := time .Now ()
64+ part1 , part2 := day7 ("test.txt" )
65+ fmt .Println (part1 , part2 )
66+ if part1 != 21 || part2 != 40 {
67+ log .Fatal ("Test failed " , part1 , part2 )
68+ }
69+
70+ part1 , part2 = day7 ("input.txt" )
71+ fmt .Println (part1 , part2 )
72+ fmt .Println ("Elapsed time:" , time .Since (t1 ))
73+ }
Original file line number Diff line number Diff line change 1+ .......S.......
2+ ...............
3+ .......^.......
4+ ...............
5+ ......^.^......
6+ ...............
7+ .....^.^.^.....
8+ ...............
9+ ....^.^...^....
10+ ...............
11+ ...^.^...^.^...
12+ ...............
13+ ..^...^.....^..
14+ ...............
15+ .^.^.^.^.^...^.
16+ ...............
You can’t perform that action at this time.
0 commit comments