Code beautification

master
Arne Wischer 6 years ago
parent 8ffb078c2e
commit b00ec53621
  1. 13
      days/day1.py
  2. 47
      days/day4.py

@ -6,23 +6,18 @@ class Day1(unittest.TestCase):
def calc_fuel(self, mass): def calc_fuel(self, mass):
fuel = mass // 3 - 2 fuel = mass // 3 - 2
if(fuel > 0): return fuel + self.calc_fuel(fuel) if fuel > 0 else 0
return fuel + self.calc_fuel(fuel)
else:
return 0
def test_day1a(self): def test_day1a(self):
fuel = 0 fuel = 0
with open(self.inputfile) as fp: with open(self.inputfile) as fp:
value = fp.readline() for _, line in enumerate(fp):
while value: fuel += int(line) // 3 - 2
fuel += int(value) // 3 - 2
value = fp.readline()
self.assertEqual(fuel, 3402609) self.assertEqual(fuel, 3402609)
def test_day1b(self): def test_day1b(self):
with open(self.inputfile) as fp: with open(self.inputfile) as fp:
line = fp.readline() for _, line in enumerate(fp):
sumfuel = 0 sumfuel = 0
while line: while line:
sumfuel += self.calc_fuel(int(line)) sumfuel += self.calc_fuel(int(line))

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

Loading…
Cancel
Save