add day 3

This commit is contained in:
Luna 2018-12-03 02:34:35 -03:00
parent bc3c9a0e46
commit 9604741798
3 changed files with 1450 additions and 0 deletions

59
day3/day3_1.py Normal file
View File

@ -0,0 +1,59 @@
import pprint
from collections import namedtuple
Claim = namedtuple('Claim', 'cid p1 p2 width height')
def main():
claims = []
cloth = []
print('allocating..')
for i in range(1000):
cloth.insert(i, [])
for j in range(1000):
cloth[i].insert(j, None)
print('allocation done')
while True:
try:
claim_line = input('>').replace(' ', '')
except EOFError:
break
cid_p, params = claim_line.split('@')
p1p2, wh = params.split(':')
p1, p2 = p1p2.split(',')
w, h = wh.split('x')
cid = cid_p.replace('#' , '')
c = Claim(cid, int(p1), int(p2), int(w), int(h))
claims.append(c)
pprint.pprint(claims)
print('running claims')
for claim in claims:
print(claim)
for i in range(claim.p1, claim.p1 + claim.width):
for j in range(claim.p2, claim.p2 + claim.height):
print('claiming', i, j, claim.cid)
if cloth[i][j] is None:
cloth[i][j] = []
cloth[i][j].append(claim)
print('result: ', cloth[i][j])
overlaps = []
for i in range(1000):
for j in range(1000):
if len(cloth[i][j] or []) > 1:
overlap += 1
print('overlap', overlap)
main()

60
day3/day3_2.py Normal file
View File

@ -0,0 +1,60 @@
import pprint
from collections import namedtuple
Claim = namedtuple('Claim', 'cid p1 p2 width height')
def main():
claims = []
cloth = []
print('allocating..')
for i in range(1000):
cloth.insert(i, [])
for j in range(1000):
cloth[i].insert(j, None)
print('allocation done')
while True:
try:
claim_line = input('>').replace(' ', '')
except EOFError:
break
cid_p, params = claim_line.split('@')
p1p2, wh = params.split(':')
p1, p2 = p1p2.split(',')
w, h = wh.split('x')
cid = cid_p.replace('#' , '')
c = Claim(cid, int(p1), int(p2), int(w), int(h))
claims.append(c)
pprint.pprint(claims)
print('running claims')
for claim in claims:
for i in range(claim.p1, claim.p1 + claim.width):
for j in range(claim.p2, claim.p2 + claim.height):
if cloth[i][j] is None:
cloth[i][j] = []
cloth[i][j].append(claim)
overlaps = set()
for i in range(1000):
for j in range(1000):
if len(cloth[i][j] or []) > 1:
for claim in cloth[i][j]:
overlaps.add(claim)
claims = set(claims)
non_overlap = claims - overlaps
print('non - overlap', non_overlap)
main()

1331
day3/input Normal file

File diff suppressed because it is too large Load Diff