From fc806e89614e6cb0f17b6699799325b5de9677fb Mon Sep 17 00:00:00 2001 From: Ettore Dreucci Date: Wed, 4 Dec 2019 17:30:55 +0100 Subject: [PATCH] 2019. Day 4. Part 1 Signed-off-by: Ettore Dreucci --- 2019/day_04/day_04.go | 48 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 2019/day_04/day_04.go diff --git a/2019/day_04/day_04.go b/2019/day_04/day_04.go new file mode 100644 index 0000000..38e1049 --- /dev/null +++ b/2019/day_04/day_04.go @@ -0,0 +1,48 @@ +package main + +import "fmt" + +const ( + min = 130254 + max = 678275 +) + +func intToSlice(n int) []int { + s := make([]int, 0) + for n != 0 { + r := n % 10 + n = n / 10 + s = append([]int{r}, s...) + } + return s +} + +func twoEqualAdjacentDigits(pwd []int) bool { + for i, digit := range pwd { + if i < len(pwd)-1 && digit == pwd[i+1] { + return true + } + } + return false +} + +func increasingDigits(pwd []int) bool { + for i, digit := range pwd { + if i < len(pwd)-1 && digit > pwd[i+1] { + return false + } + } + return true +} + +func main() { + // Part 1: + count := 0 + for i := min; i < max; i++ { + pwd := intToSlice(i) + if twoEqualAdjacentDigits(pwd) && increasingDigits(pwd) { + count++ + } + } + fmt.Printf("Part 1: %d\n", count) +}