File tree Expand file tree Collapse file tree 1 file changed +46
-2
lines changed
Expand file tree Collapse file tree 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) {
4444 return sum , nil
4545}
4646
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+
4785func main () {
4886 input , err := os .Open ("input.txt" )
4987 if err != nil {
5088 log .Fatal (err )
5189 }
5290 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 )
5497 if err != nil {
5598 log .Fatal (err )
5699 }
57- fmt .Println (sum )
100+ fmt .Println (distances )
101+ fmt .Println (similarityScore )
58102}
You can’t perform that action at this time.
0 commit comments