From bfcf951c12f71d627762d678f9f8a23e28f1bb3c Mon Sep 17 00:00:00 2001 From: Jeremy Kaplan Date: Tue, 3 Dec 2019 22:30:56 -0800 Subject: [PATCH] 2019: Day 4 Part 1 --- 2019/day4/part1.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 2019/day4/part1.rb diff --git a/2019/day4/part1.rb b/2019/day4/part1.rb new file mode 100644 index 0000000..39efa38 --- /dev/null +++ b/2019/day4/part1.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +input = '' # TODO +range = Range.new(*input.split('-').map(&:to_i)) + +def pairwise(arr) + arr[0...-1].zip(arr[1..]) +end + +count = range.count do |n| + # 1. All numbers in this range are six digits + # 2. All numbers in this range are in this range + + digits = n.digits.reverse + + # 3. Two adjacent digits are the same + double = pairwise(digits).any? { |pair| pair.first == pair.last } + + # 4. Going from left to right, the digits *never decrease* + monotonic = pairwise(digits).none? { |pair| pair.last < pair.first } + + double && monotonic +end +pp count