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) +}