|
|
|
|
@ -1,50 +1,23 @@ |
|
|
|
|
import unittest |
|
|
|
|
import os |
|
|
|
|
from collections import Counter |
|
|
|
|
|
|
|
|
|
class Day4(unittest.TestCase): |
|
|
|
|
def num_to_array(self, num): |
|
|
|
|
arr = [] |
|
|
|
|
while num != 0: |
|
|
|
|
arr.append(num % 10) |
|
|
|
|
num = num //10 |
|
|
|
|
arr.reverse() |
|
|
|
|
return arr |
|
|
|
|
|
|
|
|
|
def check_num(self, num): |
|
|
|
|
numarr = self.num_to_array(num) |
|
|
|
|
last = numarr[0] |
|
|
|
|
adj = False |
|
|
|
|
numarr = [int(d) for d in (str(num))] |
|
|
|
|
for p in range(1,6): |
|
|
|
|
val = numarr[p] |
|
|
|
|
if last > val: |
|
|
|
|
if numarr[p-1] > numarr[p]: |
|
|
|
|
return False |
|
|
|
|
if last == val: |
|
|
|
|
adj = True |
|
|
|
|
last = val |
|
|
|
|
return adj |
|
|
|
|
c = Counter(str(num)) |
|
|
|
|
return len({k: v for k, v in c.items() if v >= 2}) > 0 |
|
|
|
|
|
|
|
|
|
def check_num_grp(self, num): |
|
|
|
|
numarr = self.num_to_array(num) |
|
|
|
|
last = numarr[0] |
|
|
|
|
adj = False |
|
|
|
|
candidate = False |
|
|
|
|
finished = False |
|
|
|
|
numarr = [int(d) for d in (str(num))] |
|
|
|
|
for p in range(1,6): |
|
|
|
|
val = numarr[p] |
|
|
|
|
if last > val: |
|
|
|
|
if numarr[p-1] > numarr[p]: |
|
|
|
|
return False |
|
|
|
|
if last == val: |
|
|
|
|
if adj: |
|
|
|
|
candidate = False |
|
|
|
|
else: |
|
|
|
|
candidate = True |
|
|
|
|
adj = True |
|
|
|
|
else: |
|
|
|
|
adj = False |
|
|
|
|
if candidate: |
|
|
|
|
finished = True |
|
|
|
|
last = val |
|
|
|
|
return finished or candidate |
|
|
|
|
c = Counter(str(num)) |
|
|
|
|
return len({k: v for k, v in c.items() if v == 2}) > 0 |
|
|
|
|
|
|
|
|
|
def test_day4a(self): |
|
|
|
|
counter = 0 |
|
|
|
|
@ -54,8 +27,6 @@ class Day4(unittest.TestCase): |
|
|
|
|
self.assertEqual(counter, 1686) |
|
|
|
|
|
|
|
|
|
def test_day4b(self): |
|
|
|
|
self.assertTrue(self.check_num_grp(112233)) |
|
|
|
|
self.assertFalse(self.check_num_grp(123444)) |
|
|
|
|
counter = 0 |
|
|
|
|
for num in range(168630,718099): |
|
|
|
|
if self.check_num_grp(num) == True: |
|
|
|
|
|