tvl-depot/users/wpcarro/scratch/advent-of-code-2019/day_4.py
Vincent Ambo 019f8fd211 subtree(users/wpcarro): docking briefcase at '24f5a642'
git-subtree-dir: users/wpcarro
git-subtree-mainline: 464bbcb15c
git-subtree-split: 24f5a642af
Change-Id: I6105b3762b79126b3488359c95978cadb3efa789
2021-12-14 02:15:47 +03:00

35 lines
771 B
Python

import re
start = 134792
end = 675810
def satisfies(x):
x = str(x)
result = False
double, not_decreasing = False, False
# double and *only* double exists
for i in range(len(x) - 1):
# double and left-of-a is BOL or !x
# and right-of-b is EOL or !x
a, b = x[i], x[i + 1]
bol = i - 1 < 0
eol = i + 2 >= len(x)
if a == b and (bol or x[i - 1] != a) and (eol or x[i + 2] != a):
double = True
break
# not_decreasing
prev = int(x[0])
for a in x[1:]:
a = int(a)
if prev > a:
return False
prev = a
not_decreasing = True
return double and not_decreasing
print(len([x for x in range(start, end + 1) if satisfies(x)]))