2019 day 4 and 5
This commit is contained in:
70
2019/d4.py
Normal file
70
2019/d4.py
Normal file
@@ -0,0 +1,70 @@
|
||||
from lib import get_data, str_to_ints
|
||||
|
||||
|
||||
def in_range_1(x):
|
||||
contains_double = False
|
||||
s = str(x)
|
||||
for i in range(len(s) - 1):
|
||||
if s[i] == s[i + 1]:
|
||||
contains_double = True
|
||||
break
|
||||
|
||||
if not contains_double:
|
||||
return False
|
||||
|
||||
for i in range(len(s) - 1):
|
||||
if ord(s[i]) > ord(s[i + 1]):
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def in_range_2(x):
|
||||
contains_double = False
|
||||
s = str(x)
|
||||
for i in range(len(s) - 1):
|
||||
if s[i] == s[i + 1]:
|
||||
if i + 2 < len(s):
|
||||
if s[i + 2] == s[i + 1]:
|
||||
continue
|
||||
if i - 1 >= 0:
|
||||
if s[i - 1] == s[i]:
|
||||
continue
|
||||
contains_double = True
|
||||
|
||||
if not contains_double:
|
||||
return False
|
||||
|
||||
for i in range(len(s) - 1):
|
||||
if ord(s[i]) > ord(s[i + 1]):
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def part_1(data):
|
||||
a, b = str_to_ints(data)
|
||||
b = -b
|
||||
r = 0
|
||||
for x in range(a, b + 1):
|
||||
if in_range_1(x):
|
||||
r += 1
|
||||
print(r)
|
||||
|
||||
|
||||
def part_2(data):
|
||||
a, b = str_to_ints(data)
|
||||
b = -b
|
||||
r = 0
|
||||
for x in range(a, b + 1):
|
||||
if in_range_2(x):
|
||||
r += 1
|
||||
print(r)
|
||||
|
||||
|
||||
def main():
|
||||
data = get_data(__file__)
|
||||
part_1(data)
|
||||
part_2(data)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user