diff options
author | Julien Dessaux | 2021-12-07 14:26:36 +0100 |
---|---|---|
committer | Julien Dessaux | 2021-12-07 14:26:36 +0100 |
commit | 6ed18289c89eaff3557907df63cf58bd2009b3ee (patch) | |
tree | 903d730030c18ab25c212938794c1c03f65f800f /2021/05/first_v2.go | |
parent | Initial import (diff) | |
download | advent-of-code-6ed18289c89eaff3557907df63cf58bd2009b3ee.tar.gz advent-of-code-6ed18289c89eaff3557907df63cf58bd2009b3ee.tar.bz2 advent-of-code-6ed18289c89eaff3557907df63cf58bd2009b3ee.zip |
Added the first days
Diffstat (limited to '2021/05/first_v2.go')
-rw-r--r-- | 2021/05/first_v2.go | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/2021/05/first_v2.go b/2021/05/first_v2.go new file mode 100644 index 0000000..d99f80b --- /dev/null +++ b/2021/05/first_v2.go @@ -0,0 +1,60 @@ +package main + +import ( + "bufio" + "fmt" + "os" + + "git.adyxax.org/aoc/2021/05/line" +) + +func abs(a int) int { + if a < 0 { + return -a + } + return a +} + +func computeDelta(a, b int) int { + if a < b { + return 1 + } else if a > b { + return -1 + } + return 0 +} + +func main() { + matrix := make([][]int, 1000) + for i := 0; i < 1000; i++ { + matrix[i] = make([]int, 1000) + } + + parser := line.NewParser(bufio.NewReader(os.Stdin)) + for { + l, err := parser.Parse() + if err != nil { + break + } + length := abs(l.X2 - l.X1) + if length == 0 { + length = abs(l.Y2 - l.Y1) + } + dx := computeDelta(l.X1, l.X2) + dy := computeDelta(l.Y1, l.Y2) + if dx == 0 || dy == 0 { + for i := 0; i <= length; i++ { + matrix[l.X1+i*dx][l.Y1+i*dy]++ + } + } + } + score := 0 + for i := 0; i < 1000; i++ { + for j := 0; j < 1000; j++ { + if matrix[i][j] >= 2 { + score++ + } + } + } + fmt.Println(score) +} |