File tree 1 file changed +46
-2
lines changed
1 file changed +46
-2
lines changed Original file line number Diff line number Diff line change @@ -44,15 +44,59 @@ func calculateDistances(input *os.File) (int, error) {
44
44
return sum , nil
45
45
}
46
46
47
+ func similarityScore (input * os.File ) (int , error ) {
48
+ scanner := bufio .NewScanner (input )
49
+ sum := 0
50
+ a := make ([]int , 0 )
51
+ b := make ([]int , 0 )
52
+ for scanner .Scan () {
53
+ line := scanner .Text ()
54
+ first := strings .Split (line , " " )[0 ]
55
+ firstN , err := strconv .Atoi (first )
56
+ if err != nil {
57
+ log .Fatal (err )
58
+ }
59
+ second := strings .Split (line , " " )[1 ]
60
+ secondN , err := strconv .Atoi (second )
61
+ if err != nil {
62
+ log .Fatal (err )
63
+ }
64
+ a = append (a , firstN )
65
+ b = append (b , secondN )
66
+ }
67
+ sort .Slice (a , func (i , j int ) bool {
68
+ return a [i ] < a [j ]
69
+ })
70
+ sort .Slice (b , func (i , j int ) bool {
71
+ return b [i ] < b [j ]
72
+ })
73
+ for _ , left := range a {
74
+ count := 0
75
+ for _ , right := range b {
76
+ if left == right {
77
+ count ++
78
+ }
79
+ }
80
+ sum += left * count
81
+ }
82
+ return sum , nil
83
+ }
84
+
47
85
func main () {
48
86
input , err := os .Open ("input.txt" )
49
87
if err != nil {
50
88
log .Fatal (err )
51
89
}
52
90
defer input .Close ()
53
- sum , err := calculateDistances (input )
91
+ distances , err := calculateDistances (input )
92
+ if err != nil {
93
+ log .Fatal (err )
94
+ }
95
+ input .Seek (0 , 0 )
96
+ similarityScore , err := similarityScore (input )
54
97
if err != nil {
55
98
log .Fatal (err )
56
99
}
57
- fmt .Println (sum )
100
+ fmt .Println (distances )
101
+ fmt .Println (similarityScore )
58
102
}
You can’t perform that action at this time.
0 commit comments