first commit
This commit is contained in:
commit
9f3e899cda
1024
01/input.txt
Normal file
1024
01/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
9
01/solve01.py
Executable file
9
01/solve01.py
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
start = 0
|
||||||
|
|
||||||
|
with open('input.txt', 'r') as f:
|
||||||
|
for line in f:
|
||||||
|
start += int(line)
|
||||||
|
|
||||||
|
print(start)
|
19
01/solve02.py
Executable file
19
01/solve02.py
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
start = 0
|
||||||
|
seen = [0]
|
||||||
|
|
||||||
|
def get_freq_change():
|
||||||
|
while True:
|
||||||
|
print('reading file from start')
|
||||||
|
with open('input.txt', 'r') as f:
|
||||||
|
for line in f:
|
||||||
|
yield int(line)
|
||||||
|
|
||||||
|
for change in get_freq_change():
|
||||||
|
start += change
|
||||||
|
if start in seen:
|
||||||
|
break
|
||||||
|
seen.append(start)
|
||||||
|
|
||||||
|
print(start)
|
250
02/input.txt
Normal file
250
02/input.txt
Normal file
@ -0,0 +1,250 @@
|
|||||||
|
pbopcmjeizuhxlqnwasfgtycdm
|
||||||
|
pjokrmjeizuhxlqnfasfguycdv
|
||||||
|
pbokrpjejkuhxlqnwasfgtycdv
|
||||||
|
sbokrmjeizuhxaqnwastgtycdv
|
||||||
|
pbokrmjeizuhxljnnasfgtycnv
|
||||||
|
pbokrqjeizuhxbqndasfgtycdv
|
||||||
|
bbokrmjeizuhxlqnwasfgtycfj
|
||||||
|
pbokrmjeisuhxlqnwasfzdycdv
|
||||||
|
pbokrmjefxuhxlqnwasfptycdv
|
||||||
|
pqokrmjenzuhxlqnwasfgtygdv
|
||||||
|
pbokrmjeizunklqnwassgtycdv
|
||||||
|
pbokrmjeizghxvqnkasfgtycdv
|
||||||
|
lboirmjeizuhxlqnwfsfgtycdv
|
||||||
|
pbofrmjeizuhalqnwasfgtyddv
|
||||||
|
pbokrmjeiguhplqcwasfgtycdv
|
||||||
|
pbokrmjeizzhxlqnwavfgtyctv
|
||||||
|
pbokrmjeizuhxlqnwaefgtycaj
|
||||||
|
pbokzmjedzuhxlqnwasfgtlcdv
|
||||||
|
pnokrmjegzuhxlbnwasfgtycdv
|
||||||
|
pbojrmjeizuhtlqniasfgtycdv
|
||||||
|
pbokxmiefzuhxlqnwasfgtycdv
|
||||||
|
pbokrmoeizuhxlqnpasngtycdv
|
||||||
|
abokrmjeezuhxlqnwasfdtycdv
|
||||||
|
pbokrmyeizugxlqnwasfgtycda
|
||||||
|
pbokdmjeizuhxlqnuatfgtycdv
|
||||||
|
psokrmjeiauhxlqnwasxgtycdv
|
||||||
|
pbokrmjeizuhxlqzwasfgtyzdy
|
||||||
|
pboktmjeizuhxnqndasfgtycdv
|
||||||
|
pbodrrjeizuhxlqnwasfgtycdb
|
||||||
|
pbokrmjekzuhxljnwasfgtycuv
|
||||||
|
pbokrmjnizuhllqnwawfgtycdv
|
||||||
|
prmkrmjeiwuhxlqnwasfgtycdv
|
||||||
|
pbokrmjeizkhxlenwajfgtycdv
|
||||||
|
pbofrmjeizuixlqnwasfgoycdv
|
||||||
|
gbhkrmjeizuhclqnwasfgtycdv
|
||||||
|
pbokrmweizuwxlqnwasfgtycyv
|
||||||
|
pbukrmjeizuhxlqnwasfgqhcdv
|
||||||
|
pbokxmjeizuhxlqnwasfgtecdu
|
||||||
|
pbokomjeizuhrlqnfasfgtycdv
|
||||||
|
bbokymjeizuhxlqnpasfgtycdv
|
||||||
|
pbodrmjeizuhxlqnwadfgtgcdv
|
||||||
|
zbokrljeipuhxlqnwasfgtycdv
|
||||||
|
pboermjeizuxxlqnwasfgtpcdv
|
||||||
|
pqbkrmjeizuhxlqnjasfgtycdv
|
||||||
|
pbokrmfeizuhxvqgwasfgtycdv
|
||||||
|
pbokrmjeizuhzlqnjasfdtycdv
|
||||||
|
rbofrmjeizkhxlqnwasfgtycdv
|
||||||
|
pbokrmseizubxlqnwasfgtycdy
|
||||||
|
pbocrmjeizuhxaqnwasfgtycda
|
||||||
|
pbokrmjeizuhxlqndakfgtscdv
|
||||||
|
pbokrrjeizuhxlqnwgshgtycdv
|
||||||
|
pbokrajeizuhxpqnwasrgtycdv
|
||||||
|
pbokrbjeizubxlqnwssfgtycdv
|
||||||
|
pbokemjhizuhxlqnwazfgtycdv
|
||||||
|
pbokrmjeizuhxlqntisfgtyrdv
|
||||||
|
pbokrmjwinuhxlqnwasfgkycdv
|
||||||
|
pypkrmjeizuhxlqtwasfgtycdv
|
||||||
|
pbokrmjeizuhxlqniasfrpycdv
|
||||||
|
pbokomjeizuhxlqnwasfgtgcdw
|
||||||
|
pbokrmjeizusplqnwxsfgtycdv
|
||||||
|
pbodrmueizxhxlqnwasfgtycdv
|
||||||
|
pbokwmjeizurxlqnwasfgtycdi
|
||||||
|
pbohrmjejzuhxlqnwasfgtycgv
|
||||||
|
pbokrmtqizuhxlqnwasfitycdv
|
||||||
|
ptozrmjeizuhylqnwasfgtycdv
|
||||||
|
pbokrmjtizuhxlqfwasfgtykdv
|
||||||
|
pbokrmpeizuhxnqmwasfgtycdv
|
||||||
|
pbokrmjeizujxlynwtsfgtycdv
|
||||||
|
dbokrmjeizuhxlqnwasngticdv
|
||||||
|
pbskrmjeizuhxlqnrasfttycdv
|
||||||
|
pbwkrmjerzuhxlqnwaslgtycdv
|
||||||
|
pboyrmceizuhxlqnwssfgtycdv
|
||||||
|
pbokpmjeizchxlqngasfgtycdv
|
||||||
|
pbokrmjenzuhxlqnwcsfgxycdv
|
||||||
|
pbxkrmjeizuhxlqnwadfgtyckv
|
||||||
|
pbqkrmjeizuhxlqnwasdgdycdv
|
||||||
|
pbokrmoeizdhxlqnwasfgtycqv
|
||||||
|
pbokrmjejzuhxlqnwksfgtycwv
|
||||||
|
pbfkrmjeieuhxlnnwasfgtycdv
|
||||||
|
pbokrmjeiuuhxlqnpalfgtycdv
|
||||||
|
pbokrmjeizunxyqnwasfgtdcdv
|
||||||
|
pbokrmjeazuhxrqnwasogtycdv
|
||||||
|
pbmkrmjeizuhxlqnwaufgtycdj
|
||||||
|
xbskrmjeipuhxlqnwasfgtycdv
|
||||||
|
tbokrujlizuhxlqnwasfgtycdv
|
||||||
|
xbokvmjeizuhxyqnwasfgtycdv
|
||||||
|
pbnhrmheizuhxlqnwasfgtycdv
|
||||||
|
pboorajrizuhxlqnwasfgtycdv
|
||||||
|
pbokrmjeizuhxminwusfgtycdv
|
||||||
|
pboqrmjeizuhxlqnwaslgtscdv
|
||||||
|
pgokrdjeizuhxlnnwasfgtycdv
|
||||||
|
pbokrmjeizuhxiqnwasvttycdv
|
||||||
|
pbokrmwnizuhzlqnwasfgtycdv
|
||||||
|
pbokrmjlizmhjlqnwasfgtycdv
|
||||||
|
pbwkrmjeizohxlqnwasfgtyzdv
|
||||||
|
pbykrmjmizwhxlqnmasfgtycdv
|
||||||
|
pbokrmjzizuhxeqnwasfgtpcdv
|
||||||
|
pbokrmjewzuhxzqnwasfgtybdv
|
||||||
|
pbokrmjeimupxlonwasfgtycdv
|
||||||
|
pbokrmjvizuhxlqnuasfgtycqv
|
||||||
|
pbokrmjeizjdxlqnwasfetycdv
|
||||||
|
pbofrmjeizurxlqnwasfztycdv
|
||||||
|
pbozrmjeizuhxxqpwasfgtycdv
|
||||||
|
pbovtmjeizuhxlqnwapfgtycdv
|
||||||
|
prokrmjeuzuhxlqnwasfgtycqv
|
||||||
|
ubokrmjeizuhxljnwasfgtdcdv
|
||||||
|
pboknmjepzuhxlqnwasogtycdv
|
||||||
|
pbokrmjaizuaxljnwasfgtycdv
|
||||||
|
pbdkrcjeizuhxlqnwasfgtvcdv
|
||||||
|
pbokymjeizuhxlqnwaxfgtyfdv
|
||||||
|
pbokrmjaizuhxlqnfasfgtyodv
|
||||||
|
pdekrmmeizuhxlqnwasfgtycdv
|
||||||
|
rbokrmjeizuuxlqnwasfgtycdj
|
||||||
|
pbokrmneifuhxlqiwasfgtycdv
|
||||||
|
pbokrmjeizlbxlunwasfgtycdv
|
||||||
|
pbokrmjewzuhxxqnwasfgoycdv
|
||||||
|
pbokrmjeizuhxlqtwasfgtzcdo
|
||||||
|
pbokrmkeizzhxlqnwasfgtycmv
|
||||||
|
pbokrmjeiquhxlqnywsfgtycdv
|
||||||
|
xbokrmjeizjhxlqdwasfgtycdv
|
||||||
|
pbokrmjeizahxzqnzasfgtycdv
|
||||||
|
pbokrmjeizuhxmqmwasfgtytdv
|
||||||
|
pbokrmheiluhxlqnwasfgoycdv
|
||||||
|
rbokrmjeizuhxlqnwaslgtycqv
|
||||||
|
pbbkzmjeizuhxvqnwasfgtycdv
|
||||||
|
pbokrmjeizudxlznwgsfgtycdv
|
||||||
|
pbokemjeizuhxlqnwascgtysdv
|
||||||
|
pbokrmjdizuexlgnwasfgtycdv
|
||||||
|
pbokzmjeizuhxlqnwnsfggycdv
|
||||||
|
pbokrmjeizuhxtqnwasfgiycdy
|
||||||
|
bbokrmjeizuhclunwasfgtycdv
|
||||||
|
pbtkrmjeieuhxlqnwasfgtycrv
|
||||||
|
pbokrmjeizutxlbnwasngtycdv
|
||||||
|
pbokrmjevzumxlqnwasfgtyydv
|
||||||
|
pbokrmjsizuhxlqowasfgtycyv
|
||||||
|
pbssrmjeizuhxlqbwasfgtycdv
|
||||||
|
pbokrmjeizuhflqnwxsfstycdv
|
||||||
|
pbokimjeizuhxlqnwasfgtywdm
|
||||||
|
pbokrmjbizuhxlqdwasfgtygdv
|
||||||
|
pbokrmheizuhxlqxwasfgtycnv
|
||||||
|
poakrmjeizuhylqnwasfgtycdv
|
||||||
|
vbrkrmjeizuhxlqnwaszgtycdv
|
||||||
|
pbokrmjeizuhxiqnudsfgtycdv
|
||||||
|
pbokrldeizuhxlqnwasjgtycdv
|
||||||
|
pbokrmjeizjhflqnwasfgtymdv
|
||||||
|
pbokrmjeizuhxliawasfgtvcdv
|
||||||
|
pbokrmjeisuhtoqnwasfgtycdv
|
||||||
|
nbokrijeizuhxlqnwasfgtycdh
|
||||||
|
pbokrmjeizrhxlqnwxsfztycdv
|
||||||
|
pbotrmjeizuhxlcnwasfgtyvdv
|
||||||
|
pbokrmjewzuhxlquwasfgtjcdv
|
||||||
|
pbosrmjeipuhxlqnwasfgtvcdv
|
||||||
|
pbokrmjebzurxlunwasfgtycdv
|
||||||
|
pbogimieizuhxlqnwasfgtycdv
|
||||||
|
pbokrmjeizihxlqnwasagtyzdv
|
||||||
|
pbokrmjeizuoxlqnausfgtycdv
|
||||||
|
pbokrmjeizuhxlqnwashgbjcdv
|
||||||
|
pbokrdjeizuhxlnnwasfgoycdv
|
||||||
|
pbokrzjtizlhxlqnwasfgtycdv
|
||||||
|
peokrmjexzuhxlqnwasfgoycdv
|
||||||
|
cboprmjeizuhxlqnwasfgfycdv
|
||||||
|
pbitrmjeizjhxlqnwasfgtycdv
|
||||||
|
pbourmjeizuhxldnwjsfgtycdv
|
||||||
|
pboivmjeizuhxlqnwasvgtycdv
|
||||||
|
pbokrmjeiduhxaqnqasfgtycdv
|
||||||
|
pbokicjeiwuhxlqnwasfgtycdv
|
||||||
|
pbokrmmeizulxlqnwasfgtyvdv
|
||||||
|
pbokrmjeieuhxlqnaapfgtycdv
|
||||||
|
pbokxmjeiuuhxlqnwasfgtyqdv
|
||||||
|
pbokrmjeizuhxgqniaslgtycdv
|
||||||
|
pbokrmjeizuuxlqnwisfgtyckv
|
||||||
|
pbovlmjepzuhxlqnwasfgtycdv
|
||||||
|
pbokrmjeizuhxlqdwaqfgtycdj
|
||||||
|
pbztrvjeizuhxlqnwasfgtycdv
|
||||||
|
pbokrmjeizuholunwasfptycdv
|
||||||
|
pbokrmjeizudxlqnwusfgtycqv
|
||||||
|
nbokrmjzizmhxlqnwasfgtycdv
|
||||||
|
pbokrmjeypunxlqnwasfgtycdv
|
||||||
|
pbokrjjxizuhxlqnwasfgtyddv
|
||||||
|
pbokrmjeizuhilqnwiufgtycdv
|
||||||
|
pbokrmjeizuhxtqowasfgfycdv
|
||||||
|
qbokrgjeizuhxlqnwasfgtycdx
|
||||||
|
pvoarmjeizuhxlqnwasfgtfcdv
|
||||||
|
pbokrmjjizuhxlqnwasfggyczv
|
||||||
|
pbtkrmjeizuhnlqncasfgtycdv
|
||||||
|
pbokrmjeizuzxlqnwasfgtyjnv
|
||||||
|
jmokrmzeizuhxlqnwasfgtycdv
|
||||||
|
pbykrmjmizwhxlqnwasfgtycdv
|
||||||
|
nbokrmjeizlhxlqnwasfgtecdv
|
||||||
|
pbokrmjeizuhxlqhwasrgrycdv
|
||||||
|
pbokrmjeiruhxlqnwasfgtnedv
|
||||||
|
pbokrmjeizohxlznwasfgtycuv
|
||||||
|
paokrmjdizuhxlqnwasfktycdv
|
||||||
|
pbokrmjetzutxlqnwasfntycdv
|
||||||
|
pboyrmjeizuhxlqnwasfgtetdv
|
||||||
|
pbokgujeizuhxlqwwasfgtycdv
|
||||||
|
pbokrifeizshxlqnwasfgtycdv
|
||||||
|
sbokrmjeizfhxlqnaasfgtycdv
|
||||||
|
pbokrmjeizuhxlqpwrsfgfycdv
|
||||||
|
pbokxmjeikuhxlqnwasfctycdv
|
||||||
|
fbokrmjhizuhxlqnmasfgtycdv
|
||||||
|
pbekamjeizuhxlqnwaxfgtycdv
|
||||||
|
pboksmpeizuhxlqnwasfgtyclv
|
||||||
|
pbokrmjeizrhxdqnwasfgzycdv
|
||||||
|
pbogrmxeizurxlqnwasfgtycdv
|
||||||
|
pbokrmjeieuhxlqnwqsfgtychv
|
||||||
|
vbokrmjeizuhxlqnwabfgtycdq
|
||||||
|
lbokrmjeizupxlqvwasfgtycdv
|
||||||
|
pbokrmjeizuhglqnuasfgtucdv
|
||||||
|
hbokrmjeizuhelqnwasfgtrcdv
|
||||||
|
pbokrmweizuhxlqnwhsfgtyvdv
|
||||||
|
pbokrmjeizuhxrqnwasfvtccdv
|
||||||
|
pbokrmneizuhxlwnyasfgtycdv
|
||||||
|
ybokymjeqzuhxlqnwasfgtycdv
|
||||||
|
pbousmjeizuhxlqswasfgtycdv
|
||||||
|
pblkimjeizuhxlqnwacfgtycdv
|
||||||
|
psokrmjeizuhxlqnwasfgbpcdv
|
||||||
|
peokrwjeizghxlqnwasfgtycdv
|
||||||
|
pbokrmjeizudxlqnwzsfrtycdv
|
||||||
|
pbotrmjezzxhxlqnwasfgtycdv
|
||||||
|
pkokrmjezzuhxlqnwasfgtycdh
|
||||||
|
pbokrmleizuhxlnnwasfgtyndv
|
||||||
|
pboxwmjeituhxlqnwasfgtycdv
|
||||||
|
pbokrmjeizoczlqnwasfgtycdv
|
||||||
|
pbokomjeizuhxlqnwhsfgtybdv
|
||||||
|
pbhwrmjeizuhxlqnwasfgpycdv
|
||||||
|
pbwkrmjeizuhxeqnwasfgtyidv
|
||||||
|
pbokrmjeizuhxlqnjasfgmicdv
|
||||||
|
tbokrgjeizuhxlqhwasfgtycdv
|
||||||
|
pbolrqjeizuhxlqnhasfgtycdv
|
||||||
|
pbogrhjeizbhxlqnwasfgtycdv
|
||||||
|
pbokrmjeizghxlqnwashgtycdx
|
||||||
|
pbokrmjeizuhrlqnwasfgthcrv
|
||||||
|
pbokrmjeizuhxlqnwfsngtacdv
|
||||||
|
pbokrmxeizuhxlqnwasfotyctv
|
||||||
|
pbokrmjeizuhxlqnwcsfgnocdv
|
||||||
|
pnokbmjeizuhxlqnwasfgtscdv
|
||||||
|
pbowrmjeuzuhxlqnwasfgtycdw
|
||||||
|
pbokrmjeiyuhxlqnwasqgtvcdv
|
||||||
|
pbokrmjeivuhxkpnwasfgtycdv
|
||||||
|
pbokomjeizuhxlqnwasfgtylav
|
||||||
|
pbdkrmjeizuhxlgnwjsfgtycdv
|
||||||
|
pbokrmjeizuaxxqnwasfytycdv
|
||||||
|
pbokrmjerzuhxlqnwasfgtscdk
|
||||||
|
pbokrmzerzuhxlqnwasfntycdv
|
||||||
|
pbokrmjeizumxdqnwasfgtyckv
|
||||||
|
pbtkrmjeizrhxlqnwasfgtjcdv
|
||||||
|
pbmkrmjuizuhxlqnwasfgtytdv
|
||||||
|
pbokpmjeizuhxlqnwastgtzcdv
|
||||||
|
kbokrmjeizuhxlqnwasfgzjcdv
|
33
02/solve01.py
Executable file
33
02/solve01.py
Executable file
@ -0,0 +1,33 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
def read_input():
|
||||||
|
with open('input.txt', 'r') as f:
|
||||||
|
for line in f:
|
||||||
|
yield line
|
||||||
|
|
||||||
|
|
||||||
|
def get_count(box):
|
||||||
|
occ2 = 0
|
||||||
|
occ3 = 0
|
||||||
|
|
||||||
|
seen = dict()
|
||||||
|
for c in set(box):
|
||||||
|
if occ2 and occ3:
|
||||||
|
break
|
||||||
|
if box.count(c) == 2:
|
||||||
|
occ2 = 1
|
||||||
|
if box.count(c) == 3:
|
||||||
|
occ3 = 1
|
||||||
|
return (occ2,occ3)
|
||||||
|
|
||||||
|
|
||||||
|
res2 = 0
|
||||||
|
res3 = 0
|
||||||
|
|
||||||
|
for box in read_input():
|
||||||
|
(tmp2, tmp3) = get_count(box)
|
||||||
|
res2 += tmp2
|
||||||
|
res3 += tmp3
|
||||||
|
|
||||||
|
|
||||||
|
print(res2*res3)
|
32
02/solve02.py
Executable file
32
02/solve02.py
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
def read_input():
|
||||||
|
with open('input.txt', 'r') as f:
|
||||||
|
for line in f:
|
||||||
|
yield line.strip()
|
||||||
|
|
||||||
|
def compare(a, b):
|
||||||
|
if len(a) != len(b):
|
||||||
|
return None
|
||||||
|
|
||||||
|
change = None
|
||||||
|
for i in range(len(a)):
|
||||||
|
if a[i] != b[i]:
|
||||||
|
if change is None:
|
||||||
|
change = i
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
return a[:change]+a[change+1:]
|
||||||
|
|
||||||
|
boxes = []
|
||||||
|
result = None
|
||||||
|
for box in read_input():
|
||||||
|
for b in boxes:
|
||||||
|
result = compare(box, b)
|
||||||
|
if result:
|
||||||
|
break
|
||||||
|
if result:
|
||||||
|
break
|
||||||
|
boxes.append(box)
|
||||||
|
|
||||||
|
print(result)
|
1311
03/input.txt
Normal file
1311
03/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
33
03/solver01.py
Executable file
33
03/solver01.py
Executable file
@ -0,0 +1,33 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
|
RE_LINE = re.compile('^#(\d+) @ (\d+),(\d+): (\d+)x(\d+)$')
|
||||||
|
plan = dict()
|
||||||
|
|
||||||
|
|
||||||
|
def read_input():
|
||||||
|
with open('input.txt', 'r') as f:
|
||||||
|
for line in f:
|
||||||
|
yield line.strip()
|
||||||
|
|
||||||
|
def hash_position(x, y):
|
||||||
|
return "{}x{}".format(x,y)
|
||||||
|
|
||||||
|
|
||||||
|
for claim in read_input():
|
||||||
|
m = RE_LINE.match(claim)
|
||||||
|
if not m:
|
||||||
|
raise Exception("unparsable input: {}".format(claim))
|
||||||
|
|
||||||
|
for x in range(int(m.group(4))):
|
||||||
|
for y in range(int(m.group(5))):
|
||||||
|
hash = hash_position(x+int(m.group(2)), y+int(m.group(3)))
|
||||||
|
if hash not in plan:
|
||||||
|
plan[hash] = []
|
||||||
|
plan[hash].append(int(m.group(1)))
|
||||||
|
|
||||||
|
overlap = [ k for k,v in plan.items() if len(v) > 1]
|
||||||
|
|
||||||
|
print(len(overlap))
|
||||||
|
|
39
03/solver02.py
Executable file
39
03/solver02.py
Executable file
@ -0,0 +1,39 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
|
RE_LINE = re.compile('^#(\d+) @ (\d+),(\d+): (\d+)x(\d+)$')
|
||||||
|
plan = dict()
|
||||||
|
all = dict()
|
||||||
|
overlap = dict()
|
||||||
|
|
||||||
|
def read_input():
|
||||||
|
with open('input.txt', 'r') as f:
|
||||||
|
for line in f:
|
||||||
|
yield line.strip()
|
||||||
|
|
||||||
|
def hash_position(x, y):
|
||||||
|
return "{}x{}".format(x,y)
|
||||||
|
|
||||||
|
|
||||||
|
for claim in read_input():
|
||||||
|
m = RE_LINE.match(claim)
|
||||||
|
if not m:
|
||||||
|
raise Exception("unparsable input: {}".format(claim))
|
||||||
|
|
||||||
|
for x in range(int(m.group(4))):
|
||||||
|
for y in range(int(m.group(5))):
|
||||||
|
hash = hash_position(x+int(m.group(2)), y+int(m.group(3)))
|
||||||
|
claim_id = int(m.group(1))
|
||||||
|
all[claim_id] = True
|
||||||
|
if hash not in plan:
|
||||||
|
plan[hash] = []
|
||||||
|
plan[hash].append(claim_id)
|
||||||
|
if len(plan[hash]) > 1:
|
||||||
|
overlap[plan[hash][-1]] = True
|
||||||
|
overlap[plan[hash][-2]] = True
|
||||||
|
|
||||||
|
all = set(all.keys())
|
||||||
|
overlap = set(overlap.keys())
|
||||||
|
|
||||||
|
print(all - overlap)
|
Loading…
x
Reference in New Issue
Block a user