Skip to content

Instantly share code, notes, and snippets.

@JL-Cox
Created December 4, 2019 15:28
Show Gist options
  • Save JL-Cox/2decb6754d51b4e22339b9fa22c33eca to your computer and use it in GitHub Desktop.
Save JL-Cox/2decb6754d51b4e22339b9fa22c33eca to your computer and use it in GitHub Desktop.
Advent Of Code - 2019 - Day4 Puzzle1
"""However, they do remember a few key facts about the password:
It is a six-digit number.
The value is within the range given in your puzzle input.
Two adjacent digits are the same (like 22 in 122345).
Going from left to right, the digits never decrease; they only ever increase or stay the same (like 111123 or 135679).
Other than the range rule, the following are true:
111111 meets these criteria (double 11, never decreases).
223450 does not meet these criteria (decreasing pair of digits 50).
123789 does not meet these criteria (no double)."""
def validate_number(number):
def check_for_twins(some_number):
some_number = str(some_number)
for num in range(1, len(some_number)):
if some_number[num] == some_number[num - 1]:
return True
return False
def check_digits_increase(some_number):
some_number = str(some_number)
for num in range(len(str(some_number)) - 1):
if some_number[num] > some_number[num + 1]:
return False
return True
has_six_digits = len(str(number)) == 6
within_range = 235741 <= number <= 706948
has_twins = check_for_twins(number)
digits_increase = check_digits_increase(number)
if has_six_digits and within_range and has_twins and digits_increase:
return True
else:
return False
def run_program():
list_of_valid_digits = []
for digit in range(235741, 706949):
if validate_number(digit):
list_of_valid_digits.append(digit)
print(len(list_of_valid_digits))
run_program()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment