subtree(users/wpcarro): docking briefcase at '24f5a642
'
git-subtree-dir: users/wpcarro git-subtree-mainline:464bbcb15c
git-subtree-split:24f5a642af
Change-Id: I6105b3762b79126b3488359c95978cadb3efa789
This commit is contained in:
commit
019f8fd211
766 changed files with 175420 additions and 0 deletions
35
users/wpcarro/scratch/advent-of-code-2019/day_4.py
Normal file
35
users/wpcarro/scratch/advent-of-code-2019/day_4.py
Normal file
|
@ -0,0 +1,35 @@
|
|||
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)]))
|
Loading…
Add table
Add a link
Reference in a new issue