commit 3d819bf6b75f59a69934e50e3ca6aa5a8a37d392 Author: Luke Hubmayer-Werner Date: Mon Dec 3 19:04:45 2018 +1030 Added full days 1-3 2018, full days 1-11 2015, first star day 12 2015 diff --git a/2015/day1-input b/2015/day1-input new file mode 100644 index 0000000..71a7803 --- /dev/null +++ b/2015/day1-input @@ -0,0 +1 @@ +()(((()))(()()()((((()(((())(()(()((((((()(()(((())))((()(((()))((())(()((()()()()(((())(((((((())))()()(()(()(())(((((()()()((())(((((()()))))()(())(((())(())((((((())())))(()())))()))))()())()())((()()((()()()()(()((((((((()()())((()()(((((()(((())((())(()))()((((()((((((((())()((()())(())((()))())((((()())(((((((((((()()(((((()(()))())(((()(()))())((()(()())())())(()(((())(())())()()(()(()((()))((()))))((((()(((()))))((((()(()(()())())()(((()((((())((((()(((()()(())()()()())((()((((((()((()()))()((()))()(()()((())))(((()(((()))((()((()(()))(((()()(()(()()()))))()()(((()(((())())))))((()(((())()(()(())((()())))((((())))(()(()(()())()((()())))(((()((()(())()()((()((())(()()((())(())()))()))((()(())()))())(((((((()(()()(()(())())))))))(()((((((())((((())((())())(()()))))()(())(()())()())((())(()))))(()))(()((()))()(()((((((()()()()((((((((()(()(())((()()(()()))(())()())()((())))()))()())(((()))(())()(())()))()((()((()(()()())(())()()()((())())))((()()(()()((()(())()()())(((()(()()))))(())))(()(()())()))()()))))))()))))((((((())))())))(()(())())(()())))))(()))()))))))()((()))))()))))(()(()((()())())(()()))))(((())()))())())())(((()(()()))(())()(())(())((((((()()))))((()(()))))))(()))())(((()()(()))()())()()()())))))))))))))(())(()))(()))((()(())(()())(())())(()())(())()()(()())))()()()))(())())()))())())(())((())))))))(())))(())))))()))))((())(()(((()))))(()))()((()(())))(()())(((((()))()())()()))))()))))()))())(()(()()()))()))))))((()))))))))))()((()))((()(())((())()()(()()))()(()))))()()(()))()))(((())))(())()((())(())(()())()())())))))))())))()((())))()))(()))()()))(((((((()))())(()()))(()()(()))()(()((()())()))))))(((()()()())))(())()))()())(()()))()()))))))))(())))()))()()))))))()))()())))()(())(())))))()(())()()(()()))))())((()))))()))))(()(((((()))))))))())))())()(())()()))))(())))())()()())()()())()(()))))()))()))))))))())))((()))()))()))())))()())()()())))())))(()((())()((()))())))))())()(())((())))))))))))())()())(())())())(()))(()))()))())(()(())())()())()()(()))))(()(())))))))(())))())(())))))))())()()(())())())))(())))))()))()(()())()(()))())())))))()()(()))()))))())))))))))()))))()))))))())()())()()))))()())))())))))))))))()()))))()()(((()))()()(())()))))((()))))(()))(())())))(())()))))))(()))()))))(())())))))()))(()())))))))))))))())))))))))()((()())(()())))))))((()))))(())(())))()(()())())))())())(()()()())))()))))))())))))())()()())))))))))))()()(()))))()())()))((()())(()))))()(()))))))))))()())())(((())(()))))())()))()))()))))))()))))))(()))))()))))()(())))(())))(()))())()()(()()))()))(()()))))))))()))(()))())(()()(()(()())()()))()))))))))(())))))((()()(()))())())))))()))())(()())()()))())))()(()()()()))((())())))())()(()()))()))))))))(()))(())))()))))(()(()())(()))))()())())()))()()))())))))))))))())()))))))()))))))))())))))()))))())(()())))(())()))())())))))()()(()()())(()())))()()))(((()))(()()()))))()))))()))))((())))()((((((()()))))))())))))))))))(((()))))))))))))(())())))))())(()))))))(()))((()))())))()(()((()))()))()))))))))))())()))()(()()))))())))())(())()(()))()))())(()))()))))(()()))()()(())))))()))(())(()(()()))(()()())))))(((()))))))()))))))))))))(())(()))))()())())()()((()()))())))))(()))))())))))))()()()))))))))())))()(((()()))(())))))(((())())))))((()))()(()))(()))))(()())))(()))())))))()))))(())(())))()((()))(())())))()()))()))))))))()))(()()()(()()()(()))())(())()())(((()))(())))))))))(((()())))()()))))))))()(())(()))()((((())(())(()())))()))(((())()()()))((()))(()))())())))())))(()))())()())())(()(())())()()()(())))())(())))(())))(())()))()))(()((()))))))))())(()))))))())(()()))()()))()(()(()())))()()(()((()((((((()))(())))()()()))())()))((()()(()))())((()(()(()))(()()))))()())))()))()())))))))()()((()())(())))()))(()))(())(()))())(()(())))()()))))))(((()(((()()))()(()(())())((()()))()))()))()))()(()()()(()))((()())()(())))()()))(((())()()())(())()((()()()()(()(())(()()))()(((((()())))((())))))(()()()))))(((()(())))()))((()((()(())()(()((())))((()())()(()))(((()())()()(()))(())(((()((()())()((())()())(((()()))((()((())(()))(()())(()()()))((()))(())(()((()()())((()))(())))(())(())(())))(()())))(((((()(()(((((()())((((()(()())(())(()()(((())((()(((()()(((()()((((((())))())(()((((((()(()))()))()()((()((()))))()(()()(()((()()))))))(((((()(((((())()()()(())())))))))()))((()()(())))(())(()()()())))))(()((((())))))))()()(((()(()(()(()(()())()()()(((((((((()()())()(()))((()()()()()(((((((()())()((())()))((((((()(()(()(()())(((()(((((((()(((())(((((((((())(())())()))((()(()))(((()()())(())(()(()()(((()(())()))())))(())((((((())(()()())()()(((()(((())(()(((())(((((((()(((((((((()))(())(()(()(()))))((()))()(())())())((()(()((()()))((()()((()(())(())(()((())(((())(((()()()((((((()()(())((((())()))))(())((()(()((())))(((((()(()()())())((())())))((())((()((()()((((((())(((()()(()())())(()(()))(()(()))())())()(((((((()(((()(())()()((())((()(()()((()(()()(((((((((((())((())((((((())((()((((()(()((((()(((((((())()((()))))())()((()((((()(()(((()((()())))(())())(((()(((())((((((()(((((((((()()(())))(()(((((()((((()())))((()((()((()(()()(((())((((((((((((()(((())(()(((((()))(()()(()()()()()()((())(((((((())(((((())))))())()(()()(()(()(((()()(((((())(()((()((()(((()()((()((((())()))()((((())(())))()())(((())(())(()()((()(((()()((((((((((()()(()())())(((((((((())((((()))()()((((())(()((((()(((())())(((((((((((()((((())))(())(()(((()(((()((())(((((()((()()(()(()()((((((()((((()((()(()((()(()((((((()))))()()(((((()((()(()(())()))(())(((((((()((((()())(()((()((()(()))())))(())((()))))(((((((()()()())(()))(()()((()())()((()((()()()(()(()()))(()())(())(((((()(((((((((((()((()(((()(((((((()()((((((()(((((()(()((()(((((())((((((()))((((())((()()((())(((())()(((((()()(((((()((()(()(((((((()(((((()((()((()((())(())((())(()))()()))(()()(()(()()(((((((()(((()(((())()(((((()((((((()())((((())()((()((()(()()())(()))((((()()((((((()((()(()(()((((()((()((())((((((()(()(())((((((()((((((((((()((())()))()(()(()(((((()()()))((())))()(()((((((((((((((()(((()((((()((())((()((()(((()()(()(((()((())(()()())))()(()(()(((((()()(()(()((((()(((((())()(()(()))(((((()()(((()()(())((((((((((((((())((())(((((((((((())()()()(())()(()(()(((((((((())(((()))(()()())(()((((()(())(((((()())(())((((((((())()((((()((((((())(()((()(())(((()((((()))(((((((((()()))((((()(())()()()(())(()((())((()()))()(((())(((((())((((((()()))(((((((((()((((((())))(((((((()((()(()(())))())(()(()))()(((((()())(()))()(()(())(((()))))())()())))(((((()))())()((()(()))))((()()()((((((()))()()((((((((())((()(()(((()(()((())((()())(()((((())(()(((()()()(()(()()))())())((((((((((())())((()))()((())(())(())))())()(()()(())))())(()))(((()(()()(((()(((())))()(((()(())()((((((())()))()))()((((((()(()(((((()())))()))))())()()(((()(((((())((()()(()((()((()(()(()(())))(()()()()((()(())(((()((()))((((()))())(())))())(()))()()()())()))(((()()())()((())))(())(()()()()(()())((()(()()((((())))((()((()(())((()(()((())()(()()(((()())()()())((()))((())(((()()(())))()()))(((()((())()(((((()())(())((())()())())((((((()(()(((((()))(()( \ No newline at end of file diff --git a/2015/day1.py b/2015/day1.py new file mode 100644 index 0000000..aab038b --- /dev/null +++ b/2015/day1.py @@ -0,0 +1,12 @@ +with open('day1-input', 'r') as file: + data = file.readlines() +print(data[0].count('(') - data[0].count(')')) # Part 1 +f = 0 +for i, c in enumerate(data[0]): + if c == '(': + f += 1 + else: + f -= 1 + if f < 0: + print(i+1) # Part 2 + break diff --git a/2015/day10.py b/2015/day10.py new file mode 100644 index 0000000..cbab64b --- /dev/null +++ b/2015/day10.py @@ -0,0 +1,23 @@ +data = '3113322113' + +def iterate(s): + lastchar = s[0] + lastcount = 1 + output = [] + for c in s[1:] + '\x00': + if c == lastchar: + lastcount += 1 + else: + output += [str(lastcount), lastchar] # [lastchar]*lastcount + lastchar = c + lastcount = 1 + return ''.join(output) + +s = data +for i in range(40): + s = iterate(s) +print(len(s)) # Part 1 +s2 = s +for i in range(10): # equivalent to 50 times from starting input. Doesn't really save time though. + s2 = iterate(s2) +print(len(s2)) # Part 2 diff --git a/2015/day11.py b/2015/day11.py new file mode 100644 index 0000000..875ae28 --- /dev/null +++ b/2015/day11.py @@ -0,0 +1,48 @@ +data = 'cqjxjnds' +#import numpy as np +#base26m = np.array([26**n for n in range(7, -1, -1)], dtype=np.int64) +#def increment(s): + #digits = [ord(c)-97 for c in s] + #base26 = np.dot(base26m, digits) + #num = base26 + 1 + #digits2 = [] + #while num: + #digits2.append(num % 26) + #num //= 26 + #digits2 += [0]*(8-len(digits2)) + #return ''.join([chr(d+97) for d in reversed(digits2)]) + +def increment(s): + if 'a' <= s[-1] < 'z': + inc = 2 if s[-1] in 'hnk' else 1 + return s[:-1] + chr(ord(s[-1])+inc) + else: + return increment(s[:-1]) + 'a' + +def is_valid(s): + #if 'i' in s or 'o' in s or 'l' in s: + #return False + straight = False + for a, b, c in zip(s[:-2], s[1:-1], s[2:]): + if ord(a) == ord(b)-1 == ord(c)-2: + straight = True + break + if not straight: + return False + pairs = set() + for a, b in zip(s[:-1], s[1:]): + if a == b: + pairs.add(a) + if len(pairs) >= 2: + return True + return False + +password = increment(data) +while not is_valid(password): + password = increment(password) +print(password) # Part 1 -- cqkkaabc is not correct?! - actually cqjxxyzz + +password2 = increment(password) +while not is_valid(password2): + password2 = increment(password2) +print(password2) # Part 2 diff --git a/2015/day12-input b/2015/day12-input new file mode 100644 index 0000000..87e5309 --- /dev/null +++ b/2015/day12-input @@ -0,0 +1 @@ +[{"a":{"e":{"e":161,"a":"blue","d":{"e":-14,"a":"red","d":{"c":"yellow","a":[-35,0],"b":"orange","d":{"e":70,"a":"green","d":"blue","j":12,"c":69,"h":"orange","b":92,"g":"yellow","f":"green","i":121}},"c":"blue","h":14,"b":46,"g":62,"f":[179]},"j":{"e":133,"c":"violet","a":"orange","b":"blue","d":"violet"},"c":{"e":151,"a":"violet","d":{"e":"red","c":93,"a":135,"g":{"e":43,"c":"green","a":"orange","b":"green","d":54},"b":69,"d":159,"f":2},"c":"green","h":65,"b":{"c":126,"a":106,"b":190,"d":-40},"g":134,"f":"red"},"h":87,"b":[-3,"yellow",50,120],"g":{"e":[138,83,"red"],"c":["yellow",["red",177,98,"blue",179,"blue","violet",23],108,["green",17,-46,3,99],-43,46,"orange","yellow",{"a":192,"b":39},57],"a":"red","b":195,"d":172},"f":97,"i":160},"a":"orange","d":120,"c":61,"h":"red","b":186,"g":{"e":"orange","a":82,"d":{"a":{"e":"green","c":-5,"a":-13,"b":12,"d":"blue","f":-19}},"c":"blue","h":["violet","violet",82,3,"orange","orange",45,"red",198,[81,"red","green","green","yellow",{"c":"orange","a":"blue","b":193},"blue"]],"b":99,"g":{"a":[64,"orange","blue",98],"b":30},"f":"orange","i":[167]},"f":[{"e":"green","c":168,"a":"red","b":173,"d":"blue"},{"e":"violet","c":90,"a":10,"g":{"a":3,"b":195},"b":"orange","d":{"e":143,"c":-26,"a":136,"g":-28,"b":137,"d":"violet","f":[108,70,19,"blue","violet","orange"]},"f":-11},{"e":188,"a":173,"d":135,"j":148,"c":"orange","h":["orange","yellow",108,"violet","violet","blue",188,"yellow","red"],"b":[145,118,"orange","green","green",17,["red",55,86,-20,"green",118,"violet","green"]],"g":{"e":62,"c":"blue","a":"violet","b":-41,"d":5},"f":"green","i":[33,"orange"]},{"a":"green"},{"a":[87,"violet"],"b":"violet"},{"e":"violet","a":147,"d":"blue","c":["blue",91,"violet","violet","yellow","orange","yellow",-4],"h":"yellow","b":19,"g":{"a":"red"},"f":[-38,"yellow","violet",-10,"orange",29,"violet",52],"i":"red"},54,[-14,-2,{"e":12,"a":"violet","d":"blue","j":"orange","c":180,"h":{"e":186,"a":"green","d":"violet","c":"orange","h":"yellow","b":"yellow","g":"green","f":"violet"},"b":"green","g":{"e":"green","c":103,"a":119,"b":"blue","d":"violet","f":116},"f":22,"i":"yellow"},["violet","blue","blue","violet",44,"orange"],144],"red",[119,"red",[10,15,115,"orange",55,"yellow",85,135,-12,"orange"],61,{"e":"red","c":"yellow","a":34,"b":"blue","d":"orange","f":"yellow"},{"c":{"c":"yellow","a":0,"b":"violet"},"a":"orange","b":"green","d":-37},-21]],"i":{"e":[{"e":123,"a":106,"d":100,"j":"violet","c":164,"h":["red",120,"orange","violet",54],"b":-22,"g":"violet","f":"orange","i":130}],"c":{"e":"blue","a":[[198,82,2,"orange",151],128,"violet",88],"d":72,"c":"blue","h":194,"b":4,"g":149,"f":"violet"},"a":[["blue",27,"green",174],"orange",50,"orange",["orange","violet",154,167],"red","orange",{"c":49,"a":"violet","b":76,"d":{"c":166,"a":"red","b":10,"d":185}},53,"yellow"],"b":"orange","d":101,"f":-1}},"b":{"e":{"e":["blue",92,-20,"red","yellow",129,99,"yellow",38],"a":98,"d":129,"c":-5,"h":"green","b":"violet","g":"blue","f":"yellow","i":"red"},"a":"blue","d":[[20,87,"red",124,-2,"yellow","red",17,"violet","yellow"],{"c":"violet","a":"red","b":161},104,{"e":["blue",[51,47,57,-41,"green",149,-11,"red",103,"orange"],"violet",72,"red",["orange","blue","red"],-8,{"c":"violet","a":68,"b":-43,"d":"green"},"orange"],"a":36,"d":["orange","green","green",106,"green","red","red","red","violet"],"j":{"a":"red","b":144},"c":166,"h":109,"b":[{"a":56,"b":"red"},-41,"blue",36,20,"blue","blue"],"g":188,"f":"yellow","i":-7},[155,["green","green",0,"red","blue"],{"e":144,"c":"green","a":"orange","b":133,"d":10,"f":[91,160,"blue",183,18,43,85,-37]},{"e":"violet","a":-35,"d":57,"c":"violet","h":17,"b":"orange","g":57,"f":"red","i":"blue"},"red","red","green","red",29,{"e":112,"c":["red","blue",68,"red","yellow"],"a":"blue","g":"blue","b":{"a":"red"},"d":162,"f":"green"}],"green",[42,"orange"],[["yellow",183,2,"red",115,"red",-31]]],"j":29,"c":{"e":[{"c":"orange","a":{"e":"orange","c":-47,"a":"blue","b":35,"d":25,"f":"blue"},"b":111,"d":16},-44,-22,179,"yellow",84],"a":{"e":178,"a":["red",183,92],"d":163,"c":105,"h":24,"b":"violet","g":-26,"f":[125,"green","violet"],"i":"red"},"d":[[12,"yellow","blue","green"],144,[114,"orange",92,"blue",["violet",40,"blue"],67,105],["orange",155,"violet",37,-38]],"j":{"a":{"c":["green","yellow",-13,"green","red"],"a":[-27],"b":"violet"},"b":["red",[109,57],181,"blue",193,-32,83,"violet"]},"c":128,"h":21,"b":{"e":"red","a":"red","d":"green","c":["green",{"a":"blue"}],"h":"orange","b":{"e":199,"c":35,"a":126,"b":183,"d":60},"g":"orange","f":"violet","i":105},"g":"yellow","f":133,"i":[{"c":"violet","a":"yellow","b":"orange","d":144},"red","yellow","green",105,72,"red","yellow"]},"h":["violet",[[161,"red","blue",[98,"red","violet"],"orange",51,"violet"],"violet",-6,"orange","yellow",51],{"e":72,"a":[190,"red","blue",-13,90,"blue",-6,"violet",137,61],"d":[126,["red",101,118],13,"blue",-4,"blue",[47,157,77]],"c":"orange","h":176,"b":{"c":[67,"green",59,"green",140,"orange","blue",15,53],"a":162,"b":"orange","d":47},"g":49,"f":"yellow","i":"violet"}],"b":{"e":132,"c":[["blue",142,"violet","green",75,56,"green","green"],"red",185,"orange","violet"],"a":144,"b":"violet","d":{"e":"green","a":"blue","d":"violet","c":["violet","yellow","orange","green",121,"blue",-23],"h":"violet","b":"yellow","g":-34,"f":147,"i":127},"f":-25},"g":"green","f":"blue","i":80}},{"e":[43,[34,"yellow",-1,{"e":[150,95],"a":"red","d":"green","j":{"e":"red","c":"yellow","a":"orange","g":-4,"b":-4,"d":{"e":108,"a":"green","d":"orange","j":70,"c":-1,"h":45,"b":"blue","g":-20,"f":"yellow","i":"yellow"},"f":-19},"c":"red","h":90,"b":-46,"g":96,"f":[44,-43,"green","green"],"i":[124,"orange",30,"blue","green","violet",66,"red","orange",125]}]],"c":{"a":[{"c":108,"a":"green","b":"orange"},"green","yellow"],"b":-11},"a":["red",["violet",132,-33,{"a":[148,-13,"orange",84,"yellow",10,"orange","blue"]},["red",-21,{"c":"green","a":"violet","b":"blue"},-1,"red",110,"yellow",51],["violet",{"a":"orange","b":127},[-14,{"a":"yellow"}],{"a":15}]]],"g":"violet","b":["green","violet"],"d":{"a":"yellow","b":"red"},"f":{"e":"green","c":{"a":"orange","b":"violet"},"a":{"c":102,"a":["red","green",{"e":"yellow","a":-41,"d":101,"j":{"a":"yellow"},"c":"yellow","h":"violet","b":19,"g":"blue","f":"yellow","i":61}],"b":["red","green"]},"g":55,"b":"violet","d":{"a":"orange","b":{"e":{"e":-5,"c":113,"a":"orange","g":"blue","b":"orange","d":35,"f":"violet"},"c":"blue","a":26,"b":150,"d":"blue"}},"f":"red"}},[{"a":[{"e":39,"a":"green","d":[[152,198,"yellow",75,"yellow",191,131,"blue"],[177,27,"blue","red"],51,129,"red",{"a":52},"green"],"c":165,"h":"blue","b":4,"g":[{"c":"yellow","a":"violet","b":15},"red","yellow","blue",52,182,{"a":83,"b":"green"},"blue",167,[103,66,105]],"f":-19,"i":162},"blue","orange",165,[153,"green",115],["orange",0,"green",{"c":"violet","a":"red","b":26,"d":198}],{"e":15,"a":["violet",58,-15,"orange",-3],"d":{"e":113,"c":59,"a":["green",-42,"violet",38,"green",-2],"b":"orange","d":"red"},"c":["green",156,"green","yellow",79,"red",126,64,"orange"],"h":"blue","b":"red","g":["orange",43,"red","yellow",{"e":"blue","a":47,"d":"red","c":"violet","h":44,"b":-15,"g":60,"f":"violet","i":-38},"orange",130,34],"f":-49,"i":"yellow"}],"b":[142,"green",[{"c":"yellow","a":181,"b":"yellow"},"blue"],{"a":[["red",35,"green","red",0,"yellow"]],"b":"yellow"},-20]},{"e":88,"a":{"e":"yellow","c":"blue","a":171,"b":{"c":[{"e":"orange","a":"orange","d":"green","c":"green","h":-13,"b":28,"g":70,"f":-30,"i":63}],"a":"green","b":"orange","d":23},"d":"red"},"d":19,"c":"violet","h":[[105,{"e":"orange","a":["red","violet",138,"blue"],"d":21,"j":-20,"c":-26,"h":143,"b":26,"g":119,"f":179,"i":"orange"},"green",["red",48,171,"blue"],"blue","yellow",{"a":"yellow","b":132}],"yellow",{"c":92,"a":{"c":-23,"a":"yellow","b":"violet"},"b":"green","d":[52,124,"violet",{"e":-19,"c":"yellow","a":181,"b":-23,"d":-7},"yellow",139,136]},117,{"e":145,"c":"blue","a":175,"b":42,"d":193}],"b":"yellow","g":[-16,-43,{"a":146,"b":[115,199,"red","violet",150]},{"a":{"c":-14,"a":129,"b":"yellow"}},64,[86,1,109,"orange",[{"e":"blue","c":"blue","a":"violet","b":"orange","d":"yellow"},149,30,"blue",112,{"e":140,"c":"green","a":139,"b":"orange","d":-8},-13,25,111],[127,183,"violet",81,"yellow",192,"blue",{"a":"blue"},"violet",105],71,"violet",18,{"c":37,"a":["red","blue"],"b":184,"d":121}],"green",["yellow",{"e":59,"c":33,"a":154,"g":97,"b":113,"d":"orange","f":23},"yellow",125,"yellow",85,99],34,{"c":100,"a":{"e":"green","a":19,"d":-2,"c":114,"h":72,"b":144,"g":96,"f":85,"i":125},"b":"green","d":-18}],"f":[[73,"blue",132,["yellow","blue","orange","blue",146,15,"orange","orange",{"e":138,"a":"violet","d":194,"c":104,"h":-4,"b":122,"g":-32,"f":"yellow"},-28]],{"e":"red","c":-6,"a":18,"g":-31,"b":44,"d":{"a":117,"b":-37},"f":{"a":"yellow"}},"orange",122,{"e":{"e":-31,"a":"yellow","d":78,"c":118,"h":"green","b":{"a":"violet","b":166},"g":167,"f":126,"i":137},"a":"yellow","d":{"c":152,"a":"blue","b":"green"},"c":"yellow","h":[14,"green",39,171,"red",46,137,-13],"b":"red","g":{"e":"green","c":136,"a":"violet","b":76,"d":"red","f":148},"f":86},-9,["green",156,119,["red",66,198,["orange",-1,34],"yellow",["violet",52,85,-5,"red"],96,43,"violet"],"red",32,95,{"e":119,"a":"blue","d":-8,"c":126,"h":17,"b":"blue","g":178,"f":"violet"},73]],"i":{"e":57,"a":"green","d":195,"c":"violet","h":23,"b":[{"c":"violet","a":122,"b":[64,"violet","green",11,"red",-18,"orange","green","yellow","orange"]},"orange","red",{"e":"violet","a":147,"d":"green","j":-34,"c":{"e":-24,"a":51,"d":"violet","c":"orange","h":121,"b":"blue","g":104,"f":152,"i":99},"h":62,"b":"yellow","g":37,"f":"orange","i":178}],"g":"yellow","f":"violet","i":112}},"violet","violet",{"a":192,"b":"yellow"},["red",["green",165],{"a":"red"},[["green","blue","red","violet",82,"violet","violet",61,86],["violet","green",[187,119,"yellow","orange",17,173],"orange",{"e":"yellow","a":193,"d":87,"c":-1,"h":-1,"b":"red","g":"green","f":"orange"},133,{"e":165,"a":["green",68,-24,"blue"],"d":129,"c":"yellow","h":52,"b":173,"g":"green","f":145},51],141,129],{"c":"red","a":14,"b":"violet","d":{"e":25,"a":118,"d":"orange","c":{"e":6,"c":169,"a":"violet","b":"orange","d":"violet"},"h":29,"b":{"e":"blue","c":"violet","a":["red",176,79,74,"violet","yellow",67,"violet","blue"],"b":"violet","d":"yellow"},"g":34,"f":[47,"green","violet","blue"]}},{"e":"blue","c":{"c":23,"a":"violet","b":16,"d":{"e":-27,"c":"orange","a":{"e":48,"a":56,"d":"yellow","c":173,"h":"violet","b":98,"g":147,"f":"green","i":69},"b":137,"d":[171,"green","orange",1,-22,17,"red","orange","green",-33],"f":"red"}},"a":[{"c":"blue","a":"red","b":-30},"red",{"e":"blue","c":154,"a":"green","b":"blue","d":"red","f":{"e":"blue","c":59,"a":"orange","g":125,"b":84,"d":"green","f":50}},[91,{"e":-20,"c":"red","a":"orange","b":-13,"d":46},79,173,["orange","blue","orange","yellow","red","violet",107,103,32]]],"b":[193,["orange",{"a":6,"b":"violet"},"violet",82,-24,"green"],197],"d":25,"f":-2},{"e":167,"a":-45,"d":"violet","c":55,"h":"red","b":"red","g":"blue","f":21,"i":{"e":198,"c":[{"c":"yellow","a":"green","b":55,"d":"violet"},[44,13,0],{"e":"red","a":197,"d":"violet","c":69,"h":80,"b":92,"g":11,"f":158,"i":130},"red"],"a":"violet","b":"red","d":"yellow"}},[{"e":88,"a":[["green",199,176,-23],{"e":128,"a":185,"d":"yellow","c":142,"h":"blue","b":"red","g":148,"f":124,"i":"violet"},15,"violet","violet",1],"d":"orange","c":"blue","h":-31,"b":[{"e":"violet","c":90,"a":"red","b":24,"d":177},190,65,-14],"g":146,"f":140,"i":126},"green",["yellow",-11,158,11,{"e":"green","c":"red","a":"red","b":{"a":168},"d":7},"orange",107,"green","red"]],167,[["green",{"e":37,"a":"blue","d":"blue","c":-48,"h":"red","b":179,"g":"blue","f":"orange"},{"c":"yellow","a":116,"b":196,"d":97},{"e":"violet","c":{"e":"green","a":"orange","d":107,"c":144,"h":"violet","b":4,"g":98,"f":147,"i":"blue"},"a":"violet","b":"orange","d":["orange",-40,"violet","violet",64],"f":191},["blue","blue"],178,"violet",["violet"]],"violet",49,"green","blue","violet",{"e":"orange","c":61,"a":"orange","b":"green","d":125,"f":["red","yellow","orange",["orange","yellow",-41,27,"violet","orange","blue"],"violet",9,"green","red"]}]],{"e":194,"a":{"e":138,"a":"violet","d":112,"c":[[184,"green","red","violet","blue","red",{"e":"yellow","c":"orange","a":-16,"g":"orange","b":115,"d":"red","f":-6}],149],"h":[-20,["yellow",50,"yellow",20,"red"],"green","blue",-38,128],"b":{"e":["orange",[160],{"e":193,"c":-18,"a":118,"g":"violet","b":"violet","d":"orange","f":"yellow"},183],"c":"red","a":"red","b":{"e":"yellow","a":"yellow","d":99,"c":-13,"h":166,"b":{"e":20,"c":183,"a":"red","b":77,"d":61},"g":-31,"f":"violet","i":"violet"},"d":"orange","f":49},"g":"green","f":166,"i":"red"},"d":{"e":[[-30,"green",-33,"blue"],-38,"red",167,"yellow",["orange",[53,145,67,109,156],"green",189,{"e":"red","c":"red","a":"orange","b":116,"d":"red","f":"violet"},-24,"orange","yellow","violet","violet"],{"e":"red","c":"violet","a":"red","b":76,"d":"blue","f":"orange"},[45,10,"green",168,-9,"violet"]],"c":{"c":[93,-6,109,[12,"orange","red","blue"],"violet"],"a":{"e":-35,"c":{"e":36,"c":-10,"a":105,"b":31,"d":"green"},"a":"green","b":40,"d":"yellow"},"b":["violet",{"e":"violet","a":"blue","d":"blue","c":75,"h":"yellow","b":"orange","g":23,"f":"violet"},187],"d":48},"a":172,"b":{"e":"red","a":"blue","d":[7,"yellow","yellow","red",-2],"c":"blue","h":"blue","b":167,"g":"violet","f":{"a":"yellow"}},"d":"green","f":"orange"},"c":{"e":["violet",{"c":"yellow","a":"violet","b":140,"d":102},62,"yellow",111,69,[84]],"a":114,"d":"violet","c":13,"h":"violet","b":"green","g":99,"f":{"e":"blue","a":"green","d":"blue","j":[-21,"blue","red",88,174,"orange",-1],"c":"yellow","h":[[68,119,152,"yellow"],132,"green","violet","violet",8,{"e":61,"c":1,"a":70,"b":"yellow","d":"blue","f":"violet"}],"b":48,"g":-39,"f":[3,142,"green","blue","violet","orange","orange","yellow","blue",114],"i":["blue","green",82,19,91,18]}},"h":-24,"b":137,"g":153,"f":0,"i":"orange"},{"e":45,"a":{"e":[[62,25,"orange",189,"orange",38,"orange"]],"c":119,"a":100,"b":["red",{"a":"green","b":[-36,"green","red","orange","violet",157,"blue","green",42]},"violet"],"d":[{"c":{"a":24,"b":77},"a":135,"b":8,"d":{"e":185,"a":"violet","d":138,"j":"green","c":-16,"h":6,"b":149,"g":23,"f":"violet","i":"blue"}}],"f":{"e":192,"c":"yellow","a":[-36,"blue",-27],"b":["green",-17,81],"d":"yellow","f":141}},"d":23,"j":{"a":[86,"blue",-22,"orange",123,56,[131,156,58,"violet","green",{"e":27,"a":56,"d":"yellow","c":35,"h":"green","b":84,"g":141,"f":65}],{"a":-17,"b":192},137]},"c":[47,{"e":{"e":95,"a":{"e":182,"a":177,"d":"blue","c":174,"h":-11,"b":"red","g":"yellow","f":"violet","i":39},"d":80,"c":"orange","h":"violet","b":112,"g":-19,"f":"green"},"c":{"c":"violet","a":-18,"b":"green","d":["red",16,-37,"blue","yellow",21,"blue"]},"a":-5,"b":106,"d":31,"f":146},46,-49,{"c":"orange","a":-20,"b":-9},["orange",{"e":["blue","blue",155,"orange","red"],"a":"violet","d":"orange","j":-33,"c":"green","h":"violet","b":"orange","g":"violet","f":173,"i":[-1,"yellow",194,"green",-31,"green"]},{"a":42,"b":{"e":"blue","a":"green","d":"yellow","j":"violet","c":121,"h":102,"b":"orange","g":-27,"f":137,"i":-23}},{"e":{"c":-25,"a":"red","b":129},"c":145,"a":34,"b":108,"d":"red"},"yellow","red","yellow",131,164,6],"yellow",{"a":["orange"],"b":31}],"h":{"e":{"e":"orange","a":"orange","d":{"c":"violet","a":{"e":"blue","a":127,"d":"blue","c":"green","h":"violet","b":88,"g":-40,"f":"yellow","i":"red"},"b":"violet"},"c":["red",{"e":"yellow","a":160,"d":"yellow","j":"blue","c":"orange","h":25,"b":41,"g":44,"f":"yellow","i":106},["yellow",197,21,115,"blue","green",144,38,-24,"blue"],"blue","blue","yellow",148],"h":"red","b":[65,41,{"a":177,"b":118},-42,{"e":13,"c":"orange","a":"violet","g":104,"b":32,"d":"blue","f":"orange"},119,"blue",-44],"g":"violet","f":87,"i":58},"a":128,"d":"green","j":"green","c":[{"a":{"e":"red","c":-24,"a":"yellow","b":"orange","d":"red","f":15}},"violet","green",165,"yellow",{"e":109,"a":101,"d":98,"c":"orange","h":"red","b":"yellow","g":"red","f":78},[166,"green","blue",-20,[33],"red",-9,"yellow","orange",112],"blue"],"h":[{"c":{"e":"yellow","c":144,"a":86,"b":"orange","d":"yellow","f":176},"a":128,"b":"violet","d":{"a":150}},71,{"e":{"a":47},"a":105,"d":45,"c":"green","h":"green","b":112,"g":"red","f":["yellow",196,170,49,"green","red"],"i":91},"blue","blue","green"],"b":{"e":["blue",-40,{"e":-46,"a":-15,"d":"green","c":"red","h":93,"b":18,"g":"yellow","f":-17},"green","violet","green","orange","orange","orange",80],"c":"orange","a":[93,"blue",199,91,"green"],"b":"green","d":{"e":70,"c":"orange","a":"blue","b":-39,"d":198,"f":"blue"}},"g":[57,"violet",81],"f":"violet","i":"violet"},"b":"blue","g":[154,"orange",["yellow",{"e":{"e":-37,"c":-6,"a":"orange","g":"violet","b":"orange","d":"orange","f":77},"c":"green","a":"violet","g":"yellow","b":157,"d":"violet","f":"red"},75,86,"orange"],[{"e":"orange","c":7,"a":["orange",-40,"red",139,"violet"],"b":34,"d":120,"f":"green"},152,119,"orange",{"e":[-5,"orange",107,105,"red","violet",104,136,"violet"],"c":9,"a":199,"b":48,"d":178,"f":152},36],"yellow",89,{"a":155,"b":107},{"a":{"c":13,"a":160,"b":114}},{"a":"yellow"}],"f":["yellow",{"a":"blue","b":157},{"e":"orange","c":[81,-48,"yellow",76,13,"red","red"],"a":{"e":"red","a":"yellow","d":"violet","j":12,"c":"green","h":"green","b":"yellow","g":"yellow","f":76,"i":-44},"b":"blue","d":"green","f":"blue"},{"c":{"a":"orange"},"a":180,"b":"orange","d":133}],"i":{"e":"violet","c":{"e":"orange","c":{"e":[13,"red","yellow","yellow","blue","green","red",156],"c":{"e":"violet","a":"violet","d":"blue","c":102,"h":-7,"b":21,"g":"blue","f":"violet"},"a":129,"b":26,"d":"green"},"a":7,"b":"green","d":"orange"},"a":"red","b":"orange","d":[["yellow",33,178,-31,194,9,126],"orange",27,7,91,[190,-27],[143,{"e":"blue","a":3,"d":5,"c":116,"h":"blue","b":"red","g":"red","f":"violet","i":39},"green",81,[-24,-34,-42,188,63,"orange"],2,172,-44,"yellow",75],{"e":-40,"a":["green","blue","violet",197,-21,"yellow","blue",84,"blue",7],"d":["red","yellow","orange",39,"orange",98,"violet",173],"c":49,"h":38,"b":184,"g":"green","f":-33}]}}],[[[{"e":["violet","blue",53],"a":{"e":77,"c":"orange","a":[166,118,"red",-6,"orange","orange","violet",74,"green"],"b":"red","d":47},"d":"violet","c":92,"h":4,"b":3,"g":{"e":"green","c":"blue","a":"yellow","g":167,"b":"green","d":-31,"f":30},"f":"orange"},{"e":"orange","c":194,"a":"violet","g":-34,"b":43,"d":"yellow","f":"blue"},"yellow",-28],[["green",181,"blue"]],175,"orange",110,198,[185,{"e":183,"c":{"c":29,"a":"blue","b":{"e":45,"a":"yellow","d":"orange","c":"green","h":155,"b":"green","g":-39,"f":"blue","i":"red"},"d":192},"a":"red","g":{"e":{"a":"violet","b":77},"a":-42,"d":57,"j":"orange","c":193,"h":62,"b":"red","g":64,"f":58,"i":"yellow"},"b":[["green",-31,"yellow",141,"yellow","red",111,167,-13,"blue"]],"d":["red",17],"f":"red"},"green",[{"e":22,"c":"orange","a":{"a":"red","b":"violet"},"b":"violet","d":{"a":167,"b":"blue"},"f":56},{"a":{"e":26,"c":145,"a":"violet","g":6,"b":13,"d":"green","f":"yellow"},"b":-41},"yellow",[[120,"red",187,124,"red","green"],"violet","red"],["yellow","violet",34],"yellow","red",71],{"c":["red","green",82,"yellow"],"a":[146,87,"green","orange",168,"yellow"],"b":{"a":["violet"]}},117,"orange",39,144],["violet",{"e":131,"a":-28,"d":["red","green","blue","blue","violet",-15,"violet"],"j":-42,"c":"orange","h":47,"b":"green","g":"yellow","f":[99,140,138],"i":"blue"},{"e":"blue","a":65,"d":"red","c":185,"h":8,"b":["orange",153,{"c":"orange","a":-40,"b":"violet"},"blue","orange",93,175],"g":-27,"f":"yellow","i":-47},48,{"c":83,"a":["blue",184,"orange","blue",{"a":167,"b":"yellow"},"violet","yellow"],"b":-27}],[[12,22,-15,"yellow",34],28,{"e":121,"c":170,"a":"red","g":{"e":13,"a":"yellow","d":44,"j":{"c":198,"a":"violet","b":176},"c":23,"h":-3,"b":"green","g":"blue","f":"violet","i":165},"b":"blue","d":64,"f":189},"yellow",-19,{"e":-49,"c":123,"a":-6,"g":"green","b":[190,"red","orange",68,98,"yellow","orange","red",{"c":68,"a":"red","b":"red"},"violet"],"d":-27,"f":"orange"},17,{"a":[105,127,{"e":-1,"a":138,"d":173,"j":"green","c":"blue","h":80,"b":"yellow","g":176,"f":"green","i":"green"},139,-41,"blue",10]},"orange"]],[[[{"e":"green","a":"blue","d":"orange","j":"blue","c":"yellow","h":"yellow","b":{"c":199,"a":"violet","b":-19},"g":"yellow","f":"red","i":"violet"},["orange"],[{"e":-20,"a":72,"d":"violet","c":"green","h":"yellow","b":20,"g":62,"f":-46},["yellow",48,44,"yellow","orange",-19,"green","red",10],{"c":0,"a":"blue","b":"green"},71,168,-27,"red"],{"e":"violet","a":{"a":"violet"},"d":-32,"c":"orange","h":"orange","b":"yellow","g":144,"f":131,"i":"orange"},"orange","violet","yellow","red"],151,[18,[{"a":"green"}],"orange","red","blue"]],{"c":91,"a":-17,"b":47,"d":46}],[["orange","green",[132],[4,156,186,{"e":148,"a":"green","d":"red","c":14,"h":34,"b":98,"g":141,"f":197,"i":"blue"},"red"],["yellow",["red","violet",-8,{"e":"orange","a":86,"d":"green","c":-49,"h":"green","b":"orange","g":107,"f":"green","i":174},101,57,"red","red",{"c":"orange","a":185,"b":84,"d":"blue"}],92,"orange","green","green",{"e":[-17,"blue","violet"],"c":["blue",80,"red"],"a":134,"g":192,"b":"green","d":"violet","f":51}],{"e":[122,"yellow","green","orange"],"a":"blue","d":113,"c":"yellow","h":"yellow","b":["violet","violet",199,71,128,["yellow","green","violet","blue",-41,"green","violet","yellow","yellow"],["yellow",190,"green","green","orange","green",-30,61]],"g":{"a":136,"b":"red"},"f":[135,"violet",60,["yellow",16,"blue"],131,"yellow",{"e":"orange","c":"violet","a":62,"b":190,"d":109},"blue",68,{"a":58,"b":-31}]},"yellow",-17,"violet","red"],44,[-39,"orange",{"e":70,"c":199,"a":73,"g":12,"b":"orange","d":6,"f":"green"},["blue","red",58,{"e":51,"c":80,"a":[46,26,"violet",64,"violet"],"b":"red","d":"red"},{"a":"yellow","b":"blue"}],196,{"a":"orange","b":{"c":"yellow","a":66,"b":161}}],157,[-25,["red",31],96,"yellow",[{"a":"green","b":9},"yellow",147,"yellow","green","orange",[-4,"green",66,152,157,["violet","violet",45,199,36,"violet",125,25]],50,["green",34,"orange",-37,33,179]],"green",{"e":"violet","a":["red",{"e":40,"a":"green","d":-24,"c":174,"h":"violet","b":"red","g":180,"f":63},"red","red",{"a":-36},178,-19,"violet",["green","red",24,"red"],"violet"],"d":{"e":24,"c":9,"a":7,"g":-41,"b":44,"d":"red","f":"violet"},"c":"violet","h":"yellow","b":["red"],"g":"yellow","f":-1,"i":["blue",53,"violet","red",87,"blue",{"e":-20,"a":130,"d":"red","c":"blue","h":58,"b":"blue","g":"blue","f":"blue","i":"yellow"},"orange","green"]},["red","green","green",-23,-6,75,"blue",{"e":112,"a":"green","d":129,"c":"yellow","h":"green","b":"yellow","g":-16,"f":194,"i":{"a":"violet","b":114}},"blue",[87,{"a":"violet"},10,65,70,"yellow",104,78,-41]],{"e":"violet","a":[[180,108],"orange","green","yellow",119,52],"d":113,"j":"red","c":[91,"green","red",41,"red",41],"h":"yellow","b":{"e":"orange","c":188,"a":77,"g":"yellow","b":"blue","d":-46,"f":"blue"},"g":"yellow","f":"yellow","i":{"e":{"e":"yellow","c":112,"a":"red","b":-36,"d":10,"f":"blue"},"a":{"a":172},"d":["green",92,87,65,123],"c":"blue","h":{"c":152,"a":"green","b":107,"d":-47},"b":"violet","g":25,"f":65,"i":"blue"}},"violet"],[["orange",{"e":"yellow","c":"orange","a":"orange","b":128,"d":145},"blue",-3,"green",108,"yellow",153],{"e":"red","c":50,"a":[90,"green",34,91,{"c":"orange","a":"red","b":197,"d":"red"}],"b":{"e":[54,"yellow","yellow"],"a":{"e":"orange","c":"yellow","a":"red","g":59,"b":"orange","d":161,"f":15},"d":"green","c":"orange","h":"green","b":25,"g":"green","f":"green","i":[191,95,-39]},"d":11},"yellow",39,"green","blue"],{"e":[[-45,[77,"yellow",-2,149,"blue",37,114],"violet",53,"green","violet",86,"green",2],135,-36,193,{"e":177,"a":33,"d":23,"j":"orange","c":-49,"h":79,"b":"violet","g":2,"f":"orange","i":-11},{"c":35,"a":"green","b":"blue"},"red",71,"violet","yellow"],"a":{"c":[100,"red",-32,"green","red","red",106,"red"],"a":"violet","b":-37,"d":{"e":145,"a":22,"d":[-45,85,-25,141],"j":"yellow","c":150,"h":[-4,"violet","green","violet",197,26,52,13,"blue",195],"b":165,"g":79,"f":-2,"i":"yellow"}},"d":[174,182,4,111,"violet",[25,"violet","yellow","red",107,124,114,"violet"],["red",57,-26,"green",131,25,"blue",["green","blue",47,-9,91,"yellow","red",-29,"red"]]],"c":[49,"violet",-24,56,99,127,26],"h":{"e":30,"a":10,"d":"violet","c":{"e":"blue","c":192,"a":86,"g":"blue","b":111,"d":[198,"green"],"f":-42},"h":-9,"b":["violet",{"e":29,"a":"blue","d":49,"j":109,"c":99,"h":-9,"b":"violet","g":"orange","f":120,"i":"orange"},["green",-7,"green"],"blue",129,"green","violet",{"e":-7,"a":"blue","d":130,"c":"green","h":126,"b":158,"g":"blue","f":132,"i":"blue"},191,"orange"],"g":183,"f":"yellow"},"b":"orange","g":[-7,"blue",{"e":"orange","a":"yellow","d":"violet","j":139,"c":33,"h":"blue","b":"red","g":-20,"f":3,"i":151},"blue",136,"orange",160],"f":[128]}],[["blue",185,57,82,{"e":"yellow","a":"red","d":"violet","c":5,"h":"yellow","b":16,"g":11,"f":-27}],[["orange",38,{"c":"green","a":"blue","b":[177,"blue","violet",-41,"orange",41,67,106]},"green","blue","red"],"violet",["green",-13,"orange",6,{"e":"red","a":116,"d":"orange","c":100,"h":"violet","b":"yellow","g":"red","f":"red","i":"red"},{"e":36,"a":"blue","d":"blue","j":135,"c":194,"h":-27,"b":["green",186,"green","violet","violet",197,32],"g":["blue"],"f":"violet","i":101},-47,"violet",30],[11,"orange",[-11,{"a":"green","b":-32},-21,133],{"a":32}],"orange",-49,102,136,"blue",125],-1,{"e":"orange","a":{"e":{"c":"violet","a":"green","b":13,"d":"blue"},"a":[{"e":"red","c":"orange","a":67,"g":"blue","b":"red","d":103,"f":176},7,5,176],"d":["orange",[-12,"orange","orange","yellow",165,152],["blue",38,"yellow","blue"],"violet",157,"orange"],"c":153,"h":"yellow","b":"green","g":["blue",[11,"red","yellow","green",16,89,"yellow"],"violet",180,120],"f":-21,"i":166},"d":["yellow",{"e":"violet","c":"green","a":"red","b":156,"d":"blue","f":{"e":38,"a":"orange","d":109,"c":"orange","h":93,"b":"green","g":-19,"f":-4}},{"e":88,"c":81,"a":50,"b":184,"d":"orange"},{"a":"green"},"red",[31,["blue",37],"violet",-5,16,"red",-43],"orange",32,[-10,72,16,138,"blue","green","violet"],"green"],"c":"violet","h":{"e":49,"c":-25,"a":"violet","b":42,"d":["red",-5,65,"green",-47,146,{"e":"red","c":167,"a":113,"b":169,"d":"red"},-19,"blue"],"f":"blue"},"b":{"a":89},"g":{"e":-42,"c":"green","a":-27,"b":{"e":"orange","a":"blue","d":"violet","j":"green","c":-8,"h":112,"b":-45,"g":-27,"f":"green","i":["violet","yellow","blue","violet",13,"blue",21]},"d":["orange",113,152,115,"red",112,-11,-5,{"e":"blue","c":"orange","a":158,"b":57,"d":"violet"}],"f":42},"f":[18,"yellow","red"],"i":-37}],{"c":[-7,"orange","green","green"],"a":{"a":"blue"},"b":{"e":"orange","a":114,"d":{"c":{"c":45,"a":26,"b":-4},"a":111,"b":["yellow",["red",196,"blue","yellow","orange","orange"],"red",-39,"orange","red","blue",{"e":"red","c":"red","a":"violet","b":"green","d":-13,"f":144},18],"d":22},"c":["green",{"c":"orange","a":20,"b":"yellow","d":120},98,107,"green","orange",181,[69,-30,{"e":"red","a":"blue","d":"orange","c":42,"h":136,"b":"blue","g":24,"f":35,"i":"red"},["violet","blue",77,152,"violet","red","orange"],185,[87,59],178,"yellow"],"violet"],"h":172,"b":{"c":"orange","a":{"e":161,"c":52,"a":33,"b":"violet","d":169,"f":122},"b":{"e":"yellow","a":-12,"d":"yellow","c":43,"h":-30,"b":"blue","g":94,"f":"yellow"},"d":{"e":0,"a":37,"d":"green","c":-30,"h":101,"b":111,"g":"orange","f":195}},"g":{"a":138,"b":"yellow"},"f":[160]},"d":"violet"},[{"c":{"e":{"e":[-30,"green",127],"c":"red","a":"red","b":123,"d":163},"c":"violet","a":[62,"red",101,103,172,"green",{"e":"orange","a":"blue","d":"green","j":23,"c":"red","h":"blue","b":43,"g":"orange","f":"red","i":-31},"violet",159],"b":"orange","d":37,"f":143},"a":"blue","b":136},{"e":74,"a":49,"d":"violet","j":176,"c":{"e":147,"c":50,"a":158,"b":{"e":55,"a":99,"d":"yellow","c":{"e":"red","a":"yellow","d":-14,"j":89,"c":79,"h":185,"b":138,"g":-1,"f":66,"i":"green"},"h":{"a":-9},"b":{"e":-19,"a":"violet","d":"red","c":-5,"h":99,"b":11,"g":"green","f":90},"g":177,"f":146,"i":"green"},"d":190,"f":{"e":"red","c":"yellow","a":"blue","g":"blue","b":135,"d":-49,"f":114}},"h":"yellow","b":88,"g":[{"a":["green","red",36,"violet"]},{"e":[118],"c":"violet","a":-4,"b":"red","d":"blue"},"violet","green",[["green","blue",81,"orange","blue","violet","violet",115,195],19,39,39,31,41,-1],"yellow",{"a":42,"b":149},79],"f":129,"i":173},["violet",{"e":48,"a":81,"d":102,"j":76,"c":182,"h":{"a":43,"b":"violet"},"b":-27,"g":166,"f":["orange",["yellow"],36,"green",[86,"green",2,"yellow",-36],83,"yellow","orange",89],"i":133},[{"a":"violet","b":"violet"},"blue","orange","orange",161,"violet",[196,-14,152,{"a":129},"violet"],181,"red","red"],{"e":"violet","c":40,"a":["orange","violet","yellow","violet","yellow",91,"orange","violet",108],"g":"orange","b":"blue","d":[{"a":"orange"},-28,7,"orange",{"a":"violet"},183],"f":-12},115,-32,"yellow","violet","orange",193],{"e":{"a":147,"b":11},"c":127,"a":79,"b":"yellow","d":-5},{"e":[{"e":1,"a":101,"d":"blue","c":[126,"violet",-24,"green"],"h":"blue","b":149,"g":"orange","f":"violet"},"red","red",{"a":5,"b":"orange"},"red"],"c":{"e":"orange","a":-49,"d":"red","j":-22,"c":{"e":"blue","c":155,"a":-2,"g":"blue","b":{"c":"violet","a":151,"b":"blue","d":"violet"},"d":{"c":55,"a":"blue","b":68,"d":"green"},"f":"green"},"h":"red","b":"red","g":27,"f":[["violet","blue"],"violet",144,111,-24,"blue","red","yellow"],"i":{"a":155,"b":38}},"a":"red","b":1,"d":"yellow","f":{"e":{"c":78,"a":40,"b":"green"},"c":"yellow","a":122,"g":"blue","b":"red","d":{"a":[70,79,65,"green",77,"red",133]},"f":[115,"blue"]}},{"c":42,"a":[{"e":"violet","c":{"e":"violet","a":"blue","d":"yellow","c":"violet","h":-24,"b":11,"g":"green","f":"green","i":"violet"},"a":122,"b":"orange","d":"violet"},[197,"blue",62,-32,127,119,"orange","blue"],121,{"c":198,"a":"orange","b":["red","yellow","yellow"],"d":"red"},-5],"b":{"e":14,"c":-41,"a":[["green",75,"yellow",138,"green","orange",42,188],21,98,109,149],"g":-36,"b":[-34,["orange","green",98,-45],[33,89,"blue","green"],184,"violet","yellow"],"d":["green",["orange",111,"blue","orange","blue","yellow","orange",189,"yellow","blue"],"orange",98,"green"],"f":[-32,{"e":-13,"c":"blue","a":108,"g":106,"b":153,"d":-45,"f":3},"blue",109,"blue"]}},[[[172,{"e":"red","a":"blue","d":71,"j":"green","c":61,"h":"orange","b":133,"g":155,"f":153,"i":169},"red",-6,"red",155],[60,130,80],"blue",["green",63,"green",127,"red"],["yellow",185,{"c":"orange","a":27,"b":"blue"},"yellow","violet",{"c":32,"a":6,"b":-37},-18],"yellow",138,["blue",{"e":94,"c":"blue","a":156,"b":-15,"d":52},101,"orange",61],"blue"],{"e":[62,"blue","red"],"a":138,"d":"red","j":"yellow","c":"blue","h":["green","green",-42,"green"],"b":["red",3,-36,"red","red","violet",{"e":"violet","a":"blue","d":77,"c":"orange","h":"yellow","b":"violet","g":"orange","f":"green","i":"blue"}],"g":[193,"blue","yellow",74,"green",-24,96,7],"f":-9,"i":"blue"},["yellow",[138,100,"orange",62,-30,"blue","green"],"yellow","violet",19]],109,{"e":"violet","a":"blue","d":90,"j":-39,"c":"green","h":[{"a":"green","b":153},91],"b":189,"g":"blue","f":"orange","i":"green"}],{"a":{"c":"green","a":34,"b":["yellow",181,-2,126,"blue","orange","violet"],"d":["red","violet",133,[192,176,16,"blue",3],[96,"blue","red","orange",[-16,"red",119,"yellow","orange","red",149,"red"],"red","violet","violet",-17,"yellow"],["blue"],"blue","green","blue"]},"b":{"a":"green","b":"violet"}},{"e":{"e":170,"c":139,"a":[{"e":-15,"a":78,"d":"violet","j":-1,"c":7,"h":71,"b":[116,-1,-25,-20],"g":"blue","f":"green","i":68},-25,[[125,"orange",134,"orange",35,50,126],-3,[166,"red",33,"red",85],-33,"orange",[198,"violet","red","blue",106,141,-45],-47],77,[["violet",74,"green","yellow",130,"violet"],9],{"e":9,"a":140,"d":111,"c":"yellow","h":"orange","b":"yellow","g":"violet","f":"red"}],"b":{"e":"green","c":167,"a":[16,-5,"green","red","green"],"b":-27,"d":"blue","f":"orange"},"d":{"e":{"c":66,"a":{"e":"red","a":"violet","d":"yellow","j":"red","c":"blue","h":-32,"b":95,"g":"violet","f":31,"i":"red"},"b":"blue","d":"blue"},"a":"red","d":{"c":75,"a":"yellow","b":"green","d":["green",-21,171,"yellow","blue",131,0,-33]},"c":[164,"orange"],"h":"red","b":118,"g":161,"f":"yellow","i":{"e":"violet","a":"green","d":{"e":123,"c":"violet","a":"orange","g":46,"b":-29,"d":"yellow","f":43},"c":-44,"h":"green","b":{"c":"green","a":81,"b":31,"d":"blue"},"g":"yellow","f":3}},"f":"green"},"c":"yellow","a":[["yellow","blue","red",168,69,[-44,"orange"],{"e":"blue","c":"yellow","a":65,"b":"yellow","d":"red","f":"orange"},"green","blue","blue"],{"e":{"c":48,"a":-39,"b":["orange",127,"blue","blue",92,"green"],"d":"red"},"a":-41,"d":"blue","j":"blue","c":134,"h":["violet","red"],"b":-48,"g":13,"f":"blue","i":["red",131,"blue","orange","green","green",161]},{"e":197,"a":-17,"d":-48,"c":"violet","h":177,"b":123,"g":"violet","f":-12,"i":[52,148,"violet","red",128,["blue"]]},[17,-28,{"e":-20,"a":{"a":"violet"},"d":"yellow","c":{"a":"blue","b":"violet"},"h":11,"b":39,"g":{"e":"blue","a":"green","d":"violet","c":"orange","h":"blue","b":132,"g":137,"f":"red"},"f":"blue","i":[187]},{"e":"violet","c":149,"a":"green","g":"red","b":72,"d":[-5],"f":{"c":11,"a":-2,"b":"green"}},-6,["green","yellow","yellow",{"e":"orange","c":"red","a":185,"b":"green","d":"red"}]],4],"g":"orange","b":[{"e":["violet","violet","green",119,-26],"a":"blue","d":"red","c":{"e":-38,"c":"green","a":17,"b":{"a":-31},"d":"yellow"},"h":["red","violet",-13,-41,[197,"violet","orange",150,"violet",156,161,179,70,"red"],143,110,-2,"blue","green"],"b":"green","g":"blue","f":"red"},"orange",{"c":[26,{"c":-21,"a":"green","b":"red"},"blue","orange",-23,"green",179,["orange"],{"e":"orange","c":"blue","a":"green","b":169,"d":"red"},"orange"],"a":"violet","b":"blue","d":175},60,"orange",[-44,{"e":"green","c":"orange","a":-41,"b":"violet","d":[0,"orange","green"]},"blue",["violet",[26,-9,"yellow",101,6,"yellow",161],81,104,"red","red","violet","red",180,60],114],"orange",15,22,"yellow"],"d":[53,"yellow",{"e":{"e":[99],"a":51,"d":["orange","yellow",114],"c":67,"h":{"e":109,"c":"violet","a":"orange","g":"orange","b":"blue","d":"orange","f":-4},"b":-27,"g":[93,"orange"],"f":"blue","i":"red"},"a":"red","d":37,"j":{"c":"red","a":"blue","b":"orange","d":{"a":"violet"}},"c":["green"],"h":"orange","b":[32,{"c":"red","a":"red","b":34},81,-3,{"c":"red","a":133,"b":-47,"d":112},"green","green","orange",{"e":"blue","a":"orange","d":"green","j":45,"c":-16,"h":78,"b":-28,"g":"yellow","f":"blue","i":130},0],"g":116,"f":-5,"i":"red"},"yellow","blue",152],"f":{"c":{"e":116,"c":"orange","a":128,"b":"blue","d":"blue"},"a":2,"b":{"c":101,"a":-48,"b":["yellow",106,179,["orange",97,104,"violet","orange","blue","orange"],{"e":"blue","a":183,"d":"red","c":-8,"h":26,"b":"orange","g":4,"f":"orange"},"violet","green","blue","green"]}}}],[{"e":10,"c":[[{"a":195},"yellow",[89,"orange","blue",[158,"violet",-41,174,135,"red",-21,182,"yellow","green"]],"green",{"e":"orange","a":[159,-6],"d":"yellow","j":"violet","c":"green","h":-23,"b":"orange","g":108,"f":"orange","i":53},["blue"],["blue","blue",[3,"violet","red"],"violet","yellow","violet"],85,92,"yellow"],{"a":"violet","b":188},"violet",{"a":197}],"a":-46,"g":"yellow","b":[54,["yellow","orange","violet",168,197,125,{"e":"blue","c":-24,"a":"orange","g":164,"b":"red","d":148,"f":{"e":48,"c":61,"a":"yellow","g":"blue","b":-46,"d":56,"f":-4}},{"a":["blue",131,6]},{"c":[179],"a":-13,"b":"violet","d":-34},-22],"violet",187],"d":34,"f":"yellow"},197,[{"e":52,"c":96,"a":{"e":59,"c":"orange","a":73,"b":["blue","green"],"d":-22},"b":{"e":["blue",152],"a":123,"d":"green","c":28,"h":-33,"b":-8,"g":"violet","f":167,"i":-29},"d":[[-21,"yellow"],52,"blue","red"]},-21],176,[[[193],53]],[[175,{"e":"red","a":132,"d":113,"c":["yellow"],"h":["red",185,129,57,"violet",135,"green","yellow","blue","green"],"b":"orange","g":-20,"f":{"c":"red","a":"orange","b":{"a":"violet","b":11}},"i":141},28,{"e":-4,"a":{"e":51,"a":171,"d":103,"c":{"e":-9,"a":144,"d":"green","j":"orange","c":"violet","h":126,"b":"yellow","g":60,"f":"violet","i":"orange"},"h":{"e":-40,"c":99,"a":"orange","g":"green","b":"red","d":128,"f":"blue"},"b":"green","g":82,"f":-23},"d":-16,"j":"violet","c":108,"h":140,"b":"yellow","g":"blue","f":84,"i":"orange"},[{"e":"red","c":-31,"a":-23,"g":-11,"b":25,"d":"green","f":"green"},{"e":"blue","c":180,"a":58,"b":-27,"d":60,"f":79},"orange",172],"red"],["orange",{"c":64,"a":109,"b":-14,"d":"red"},{"a":70,"b":"orange"},["violet",17],{"e":"violet","a":[141,"blue",{"a":"red"},[142,"red","violet","violet",-45,58,78,"yellow","orange"],"orange"],"d":{"e":"green","a":"red","d":86,"c":{"e":-44,"a":33,"d":"violet","c":188,"h":"red","b":-36,"g":"blue","f":"yellow"},"h":"red","b":186,"g":166,"f":"red"},"c":20,"h":"red","b":["violet",{"e":"blue","a":187,"d":115,"j":193,"c":119,"h":"yellow","b":"yellow","g":"red","f":74,"i":25},"orange",0,-17,"yellow",-23],"g":199,"f":76}]]]] diff --git a/2015/day12.py b/2015/day12.py new file mode 100644 index 0000000..b30b4de --- /dev/null +++ b/2015/day12.py @@ -0,0 +1,15 @@ +import json +number_sum = 0.0 +def parse_int(val): + i = int(val) + global number_sum + number_sum += i + return i +def parse_float(val): + i = float(val) + global number_sum + number_sum += i + return i +with open('day12-input', 'r') as file: + data = json.load(file, parse_float=parse_float, parse_int=parse_int) +print(number_sum) # Part 1 diff --git a/2015/day2-input b/2015/day2-input new file mode 100644 index 0000000..b52434e --- /dev/null +++ b/2015/day2-input @@ -0,0 +1,1000 @@ +4x23x21 +22x29x19 +11x4x11 +8x10x5 +24x18x16 +11x25x22 +2x13x20 +24x15x14 +14x22x2 +30x7x3 +30x22x25 +29x9x9 +29x29x26 +14x3x16 +1x10x26 +29x2x30 +30x10x25 +10x26x20 +1x2x18 +25x18x5 +21x3x24 +2x5x7 +22x11x21 +11x8x8 +16x18x2 +13x3x8 +1x16x19 +19x16x12 +21x15x1 +29x9x4 +27x10x8 +2x7x27 +2x20x23 +24x11x5 +2x8x27 +10x28x10 +24x11x10 +19x2x12 +27x5x10 +1x14x25 +5x14x30 +15x26x12 +23x20x22 +5x12x1 +9x26x9 +23x25x5 +28x16x19 +17x23x17 +2x27x20 +18x27x13 +16x7x18 +22x7x29 +17x28x6 +9x22x17 +10x5x6 +14x2x12 +25x5x6 +26x9x10 +19x21x6 +19x4x27 +23x16x14 +21x17x29 +24x18x10 +7x19x6 +14x15x10 +9x10x19 +20x18x4 +11x14x8 +30x15x9 +25x12x24 +3x12x5 +12x21x28 +8x23x10 +18x26x8 +17x1x8 +2x29x15 +3x13x28 +23x20x11 +27x25x6 +19x21x3 +30x22x27 +28x24x4 +26x18x21 +11x7x16 +22x27x6 +27x5x26 +4x10x4 +4x2x27 +2x3x26 +26x29x19 +30x26x24 +8x25x12 +16x17x5 +13x2x3 +1x30x22 +20x9x1 +24x26x19 +26x18x1 +18x29x24 +1x6x9 +20x27x2 +3x22x21 +4x16x8 +29x18x16 +7x16x23 +13x8x14 +19x25x10 +23x29x6 +23x21x1 +22x26x10 +14x4x2 +18x29x17 +9x4x18 +7x22x9 +19x5x26 +27x29x19 +7x13x14 +19x10x1 +6x22x3 +12x21x5 +24x20x12 +28x2x11 +16x18x23 +2x13x25 +11x7x17 +27x21x4 +2x10x25 +22x16x17 +23x22x15 +17x13x13 +23x24x26 +27x18x24 +24x7x28 +30x12x15 +14x28x19 +2x15x29 +12x13x5 +17x22x21 +27x10x27 +17x6x25 +22x2x1 +1x10x9 +9x7x2 +30x28x3 +28x11x10 +8x23x15 +23x4x20 +12x5x4 +13x17x14 +28x11x2 +21x11x29 +10x23x22 +27x23x14 +7x15x23 +20x2x13 +8x21x4 +10x20x11 +23x28x11 +21x22x25 +23x11x17 +2x29x10 +28x16x5 +30x26x10 +17x24x16 +26x27x25 +14x13x25 +22x27x5 +24x15x12 +5x21x25 +4x27x1 +25x4x10 +15x13x1 +21x23x7 +8x3x4 +10x5x7 +9x13x30 +2x2x30 +26x4x29 +5x14x14 +2x27x9 +22x16x1 +4x23x5 +13x7x26 +2x12x10 +12x7x22 +26x30x26 +28x16x28 +15x19x11 +4x18x1 +20x14x24 +6x10x22 +9x20x3 +14x9x27 +26x17x9 +10x30x28 +6x3x29 +4x16x28 +8x24x11 +23x10x1 +11x7x7 +29x6x15 +13x25x12 +29x14x3 +26x22x21 +8x3x11 +27x13x25 +27x6x2 +8x11x7 +25x12x9 +24x30x12 +13x1x30 +25x23x16 +9x13x29 +29x26x16 +11x15x9 +11x23x6 +15x27x28 +27x24x21 +6x24x1 +25x25x5 +11x1x26 +21x4x24 +10x5x12 +4x30x13 +24x22x5 +26x7x21 +23x3x17 +22x18x2 +25x1x14 +23x25x30 +8x7x7 +30x19x8 +17x6x15 +2x11x20 +8x3x22 +23x14x26 +8x22x25 +27x1x2 +10x26x2 +28x30x7 +5x30x7 +27x16x30 +28x29x1 +8x25x18 +20x12x29 +9x19x9 +7x25x15 +25x18x18 +11x8x2 +4x20x6 +18x5x20 +2x3x29 +25x26x22 +18x25x26 +9x12x16 +18x7x27 +17x20x9 +6x29x26 +17x7x19 +21x7x5 +29x15x12 +22x4x1 +11x12x11 +26x30x4 +12x24x13 +13x8x3 +26x25x3 +21x26x10 +14x9x26 +20x1x7 +11x12x3 +12x11x4 +11x15x30 +17x6x25 +20x22x3 +1x16x17 +11x5x20 +12x12x7 +2x14x10 +14x27x3 +14x16x18 +21x28x24 +14x20x1 +29x14x1 +10x10x9 +25x23x4 +17x15x14 +9x20x26 +16x2x17 +13x28x25 +16x1x11 +19x16x8 +20x21x2 +27x9x22 +24x18x3 +23x30x6 +4x18x3 +30x15x8 +27x20x19 +28x29x26 +2x21x18 +1x23x30 +1x9x12 +4x11x30 +1x28x4 +17x10x10 +12x14x6 +8x9x24 +8x3x3 +29x8x20 +26x29x2 +29x25x25 +11x17x23 +6x30x21 +13x18x29 +2x10x8 +29x29x27 +27x15x15 +16x17x30 +3x3x22 +21x12x6 +22x1x5 +30x8x20 +6x28x13 +11x2x23 +14x18x27 +6x26x13 +10x24x24 +4x24x6 +20x8x3 +23x11x5 +29x5x24 +14x15x22 +21x17x13 +10x10x8 +1x11x23 +21x19x24 +19x9x13 +21x26x28 +25x11x28 +2x17x1 +18x9x8 +5x21x6 +12x5x2 +23x8x15 +30x16x24 +7x9x27 +16x30x7 +2x21x28 +5x10x6 +8x7x1 +28x13x5 +11x5x14 +26x22x29 +23x15x13 +14x2x16 +22x21x9 +4x20x3 +18x17x19 +12x7x9 +6x12x25 +3x30x27 +8x19x22 +1x9x27 +23x20x12 +14x7x29 +9x12x12 +30x2x6 +15x7x16 +19x13x18 +11x8x13 +16x5x3 +19x26x24 +26x8x21 +21x20x7 +15x1x25 +29x15x21 +22x17x7 +16x17x10 +6x12x24 +8x13x27 +30x25x14 +25x7x10 +15x2x2 +18x15x19 +18x13x24 +19x30x1 +17x1x3 +26x21x15 +10x10x18 +9x16x6 +29x7x30 +11x10x30 +6x11x2 +7x29x23 +13x2x30 +25x27x13 +5x15x21 +4x8x30 +15x27x11 +27x1x6 +2x24x11 +16x20x19 +25x28x20 +6x8x4 +27x16x11 +1x5x27 +12x19x26 +18x24x14 +4x25x17 +24x24x26 +28x3x18 +8x20x28 +22x7x21 +24x5x28 +23x30x29 +25x16x27 +28x10x30 +9x2x4 +30x2x23 +21x9x23 +27x4x26 +2x23x16 +24x26x30 +26x1x30 +10x4x28 +11x29x12 +28x13x30 +24x10x28 +8x12x12 +19x27x11 +11x28x7 +14x6x3 +6x27x5 +6x17x14 +24x24x17 +18x23x14 +17x5x7 +11x4x23 +5x1x17 +26x15x24 +3x9x24 +5x3x15 +5x20x19 +5x21x2 +13x5x30 +19x6x24 +19x17x6 +23x7x13 +28x23x13 +9x1x6 +15x12x16 +21x19x9 +25x5x5 +9x7x9 +6x5x8 +3x11x18 +23x25x11 +25x4x6 +4x27x1 +4x3x3 +30x11x5 +9x17x12 +15x6x24 +10x22x15 +29x27x9 +20x21x11 +18x10x5 +11x2x2 +9x8x8 +1x26x21 +11x11x16 +2x18x30 +29x27x24 +27x8x18 +19x3x17 +30x21x26 +25x13x25 +20x22x1 +10x1x12 +11x17x15 +29x11x30 +17x30x27 +21x22x17 +13x6x22 +22x16x12 +27x18x19 +4x13x6 +27x29x10 +3x23x10 +26x16x24 +18x26x20 +11x28x16 +21x6x15 +9x26x17 +8x15x8 +3x7x10 +2x28x8 +1x2x24 +7x8x9 +19x4x22 +11x20x9 +12x22x16 +26x8x19 +13x28x24 +4x10x16 +12x8x10 +14x24x24 +19x19x28 +29x1x15 +10x5x14 +20x19x23 +10x7x12 +1x7x13 +5x12x13 +25x21x8 +22x28x8 +7x9x4 +3x20x15 +15x27x19 +18x24x12 +16x10x16 +22x19x8 +15x4x3 +9x30x25 +1x1x6 +24x4x25 +13x18x29 +10x2x8 +21x1x17 +29x14x22 +17x29x11 +10x27x16 +25x16x15 +14x2x17 +12x27x3 +14x17x25 +24x4x1 +18x28x18 +9x14x26 +28x24x17 +1x26x12 +2x18x20 +12x19x22 +19x25x20 +5x17x27 +17x29x16 +29x19x11 +16x2x4 +23x24x1 +19x18x3 +28x14x6 +18x5x23 +9x24x12 +15x4x6 +15x7x24 +22x15x8 +22x1x22 +6x4x22 +26x1x30 +8x21x27 +7x1x11 +9x8x18 +20x27x12 +26x23x20 +26x22x30 +24x3x16 +8x24x28 +13x28x5 +4x29x23 +22x5x8 +20x22x3 +9x9x17 +28x3x30 +10x13x10 +10x25x13 +9x20x3 +1x21x25 +24x21x15 +21x5x14 +13x8x20 +29x17x3 +5x17x28 +16x12x7 +23x1x24 +4x24x29 +23x25x14 +8x27x2 +23x11x13 +13x4x5 +24x1x26 +21x1x23 +10x12x12 +21x29x25 +27x25x30 +24x23x4 +1x30x23 +29x28x14 +4x11x30 +9x25x10 +17x11x6 +14x29x30 +23x5x5 +25x18x21 +8x7x1 +27x11x3 +5x10x8 +11x1x11 +16x17x26 +15x22x19 +16x9x6 +18x13x27 +26x4x22 +1x20x21 +6x14x29 +11x7x6 +1x23x7 +12x19x13 +18x21x25 +15x17x20 +23x8x9 +15x9x26 +9x12x9 +12x13x14 +27x26x7 +11x19x22 +16x12x21 +10x30x28 +21x2x7 +12x9x18 +7x17x14 +13x17x17 +3x21x10 +30x9x15 +2x8x15 +15x12x10 +23x26x9 +29x30x10 +30x22x17 +17x26x30 +27x26x20 +17x28x17 +30x12x16 +7x23x15 +30x15x19 +13x19x10 +22x10x4 +17x23x10 +2x28x18 +27x21x28 +24x26x5 +6x23x25 +17x4x16 +14x1x13 +23x21x11 +14x15x30 +26x13x10 +30x19x25 +26x6x26 +9x16x29 +15x2x24 +13x3x20 +23x12x30 +22x23x23 +8x21x2 +18x28x5 +21x27x14 +29x28x23 +12x30x28 +17x16x3 +5x19x11 +28x22x22 +1x4x28 +10x10x14 +18x15x7 +18x11x1 +12x7x16 +10x22x24 +27x25x6 +19x29x25 +10x1x26 +26x27x30 +4x23x19 +24x19x4 +21x11x14 +4x13x27 +9x1x11 +16x20x8 +4x3x11 +1x16x12 +14x6x30 +8x1x10 +11x18x7 +29x28x30 +4x21x8 +3x21x4 +6x1x5 +26x18x3 +28x27x27 +17x3x12 +6x1x22 +23x12x28 +12x13x2 +11x2x13 +7x1x28 +27x6x25 +14x14x3 +14x11x20 +2x27x7 +22x24x23 +7x15x20 +30x6x17 +20x23x25 +18x16x27 +2x9x6 +9x18x19 +20x11x22 +11x16x19 +14x29x23 +14x9x20 +8x10x12 +18x17x6 +28x7x16 +12x19x28 +5x3x16 +1x25x10 +4x14x10 +9x6x3 +15x27x28 +13x26x14 +21x8x25 +29x10x20 +14x26x30 +25x13x28 +1x15x23 +6x20x21 +18x2x1 +22x25x16 +23x25x17 +2x14x21 +14x25x16 +12x17x6 +19x29x15 +25x9x6 +19x17x13 +24x22x5 +19x4x13 +10x18x6 +6x25x6 +23x24x20 +8x22x13 +25x10x29 +5x12x25 +20x5x11 +7x16x29 +29x24x22 +28x20x1 +10x27x10 +6x9x27 +26x15x30 +26x3x19 +20x11x3 +26x1x29 +6x23x4 +6x13x21 +9x23x25 +15x1x10 +29x12x13 +7x8x24 +29x30x27 +3x29x19 +14x16x17 +4x8x27 +26x17x8 +10x27x17 +11x28x17 +17x16x27 +1x8x22 +6x30x16 +7x30x22 +20x12x3 +18x10x2 +20x21x26 +11x1x17 +9x15x15 +19x14x30 +24x22x20 +11x26x23 +14x3x23 +1x28x29 +29x20x4 +1x4x20 +12x26x8 +14x11x14 +14x19x13 +15x13x24 +16x7x26 +11x20x11 +5x24x26 +24x25x7 +21x3x14 +24x29x20 +7x12x1 +16x17x4 +29x16x21 +28x8x17 +11x30x25 +1x26x23 +25x19x28 +30x24x5 +26x29x15 +4x25x23 +14x25x19 +29x10x7 +29x29x28 +19x13x24 +21x28x5 +8x15x24 +1x10x12 +2x26x6 +14x14x4 +10x16x27 +9x17x25 +25x8x7 +1x9x28 +10x8x17 +4x12x1 +17x26x29 +23x12x26 +2x21x22 +18x23x13 +1x14x5 +25x27x26 +4x30x30 +5x13x2 +17x9x6 +28x18x28 +7x30x2 +28x22x17 +14x15x14 +10x14x19 +6x15x22 +27x4x17 +28x21x6 +19x29x26 +6x17x17 +20x13x16 +25x4x1 +2x9x5 +30x3x1 +24x21x2 +14x19x12 +22x5x23 +14x4x21 +10x2x17 +3x14x10 +17x5x3 +22x17x13 +5x19x3 +29x22x6 +12x28x3 +9x21x25 +10x2x14 +13x26x7 +18x23x2 +9x14x17 +21x3x13 +13x23x9 +1x20x4 +11x4x1 +19x5x30 +9x9x29 +26x29x14 +1x4x10 +7x27x30 +8x3x23 +1x27x27 +7x27x27 +1x26x16 +29x16x14 +18x6x12 +24x24x24 +26x2x19 +15x17x4 +11x7x14 +14x19x10 +9x10x1 +14x17x9 +20x19x13 +25x20x8 +24x20x21 +26x30x2 +24x2x10 +28x4x13 +27x17x11 +15x3x8 +11x29x10 +26x15x16 +4x28x22 +7x5x22 +10x28x9 +6x28x13 +10x5x6 +20x12x6 +25x30x30 +17x16x14 +14x20x3 +16x10x8 +9x28x14 +16x12x12 +11x13x25 +21x16x28 +10x3x18 +5x9x20 +17x23x5 +3x13x16 +29x30x17 +2x2x8 +15x8x30 +20x1x16 +23x10x29 +4x5x4 +6x18x12 +26x10x22 +21x10x17 +26x12x29 +7x20x21 +18x9x15 +10x23x20 +20x1x27 +10x10x3 +25x12x23 +30x11x15 +16x22x3 +22x10x11 +15x10x20 +2x20x17 +20x20x1 +24x16x4 +23x27x7 +7x27x22 +24x16x8 +20x11x25 +30x28x11 +21x6x24 +15x2x9 +16x30x24 +21x27x9 +7x19x8 +24x13x28 +12x26x28 +16x21x11 +25x5x13 +23x3x17 +23x1x17 +4x17x18 +17x13x18 +25x12x19 +17x4x19 +4x21x26 +6x28x1 +23x22x15 +6x23x12 +21x17x9 +30x4x23 +2x19x21 +28x24x7 +19x24x14 +13x20x26 +19x24x29 +8x26x3 +16x12x14 +17x4x21 +8x4x20 +13x27x17 +9x21x1 +29x25x6 +7x9x26 +13x25x5 +6x9x21 +12x10x11 +30x28x21 +15x6x2 +8x18x19 +26x20x24 +26x17x14 +27x8x1 +19x19x18 +25x24x27 +14x29x15 +22x26x1 +14x17x9 +2x6x23 +29x7x5 +14x16x19 +14x21x18 +10x15x23 +21x29x14 +20x29x30 +23x11x5 diff --git a/2015/day2.py b/2015/day2.py new file mode 100644 index 0000000..14820b8 --- /dev/null +++ b/2015/day2.py @@ -0,0 +1,17 @@ +with open('day2-input', 'r') as file: + data = [l.strip('\n') for l in file] +dimensions = [[int(x) for x in d.split('x')] for d in data] + +def area(l, w, h): + sides = [l*w, w*h, h*l] + slack = min(sides) + return 2*sum(sides) + slack + +print(sum([area(*present) for present in dimensions])) # Part 1 + +def ribbon(l, w, h): + perimeter = 2 * (sum([l,w,h])-max([l,w,h])) + volume = l*w*h + return perimeter + volume + +print(sum([ribbon(*present) for present in dimensions])) # Part 2 diff --git a/2015/day3-input b/2015/day3-input new file mode 100644 index 0000000..783e28b --- /dev/null +++ b/2015/day3-input @@ -0,0 +1 @@ +>^^v^<>v<<>v^^^^^><^<<^vv>>>^<<^>><>>><>v<><>^^<^^^<><>>vv>vv>v<<^>v<>^>vv>><>^v<<<v^>>>vv>v^^^<^^<>>v<^^v<>^<<>^>><^<>>><><>v<<<><><>v><<>^^^^v>>^>^^^v^^^^^v<><^v><<><^v^>v<<>^<>^^v^<>vv>^^<^<>^v<><^><><><<<<>^vv^>^vvvvv><><^v<<^<^^v^<>^>^^^v^>v<><^vv<<^<>v<>^^>^^>v^>^<<<v><^v>^>>v>>>>^v^^>v^>^vv^>vv^^v<<^<^^<>v>vv^v>><>>>v^>^>^^v<>^^vv>v^<v<<>^vvvv><<^<>>^v^>>^v<^<>>v^<>>v<>>v^^^><^>>vvvv>^v<^><<>>^<>^>vv>>^^>v^^^><^<<^^v>v<^<<>v>^^vvv^v^>v^<>^^<>v^v>v>vvv>^^v<>v>>^<>><>v>v^<^v<>>^>><>^vvv^>>vvv<>v>v>^>>v<<>^<>^<>>>^v<<<^<^v>vv^>><<>^v^^^v<>^^vv><>><>>^>v^v<>>^<<^v>^^^<>^v^><>v<vv^>vv<<>>><<^v^<>v>>^^<>^><<^>vv>>^<>>v><^>>^^<>>^<^v><>vv^^^v>vvv>^><<>^^>^<vvv<^<<>^>^vvvv>v>vv^<>>^vv<^^^vv><^vv<<^>^^>v^<>^v<<>v^>^>v<<^vvv<<^^>^<<<<>vv>>^<>^>>>v^^>>vv>^^v<<>>>^^v><<^^><><^<>>><^<><><^<>v>v^<><^^v^>^>^vv^>^^<vv<^vvv<>>^^<^>v^>^>^>>v<<<><^v<<><^v<^^vv>vvvvv<<>^v^v>vv>>>vvv^^<^<^<><>v><^v><^<<<>><<^>v<>^>^v>>^<>v^<^>><<>^^>^^^>^^>>><>^v^v><<<vv>v<>v^v><>>>v^<><^vvv>vv^<^<<^<^^v>^>>>v<^<^v^^<^<^>>>vv>^<<><>^>>v>^<<>><^<>v<>vv^^>^>vvv^v<<^<^^^vvv<^^v^vv^>>v<^>^^v<^<^vv>v<vv>^>vvv>>>^^>v<>^v>v^<^>>v>^^v>>>>v^v<^>v>^v<^^<^<>>^<>v<^v<>><^>vv>^^>>vv^<>>^vv<>vv<><<>>v>vv^><>>^^v^>>v^v^><<<>>^^<^v<<^<>>>>^<^>v^><<^>v<^v<^>>^^<<<<><^<^v^v<>>^v<^<<^^vv>^>>^>^vv^>^v<>>^v^^><>v>vv><^>>vvvvv^v^^<^<>v^^^^<><<>>>^v><^>^><^><<^vv<>>v^<v><>^>>v^<^^><>>><^>>>^^<^>vvvv<>^<<>^>>v<^v>^>v>>>vv>v>>v^^^<^^>^v>^>vv>vvv<>v<^>v>^^>>^v^^^^^v^vv><^<><>^>vv<^>>^vvvv^^^>^^v<<^><^^>^<>^^>^<>>^><<^^>v^v>>^>vvvv>^^v>>vv><<v>^^^v^vvv<^><<^>^<>^><<<<^<>v^>^>><>v^v<^vv^^>vv<vv^vvv<<<<>^vv<^^<>^vv^^>^>^v^vv^>>v^vv^^<v^v^^^^v<^<^>v>^>v>^vv^v^^^<^^^<^^<>^<>>>^<>>^^>v^^v^<<^v><^v>v<^><^>vv^^>v>^<><^^^>vv<<<<<^<>^v^v>^vv^<>v>v<^>vv<<^vv>vv<>>v>>><^<<><^^>^<^>>^>^^<^v>^vv><v<<>>^>v>>v>>v<^<<^<^>>>v>^^^v><^>^^>>v<<>^v>vvv^vv<<<>vvv<<>^>>>v^<^>v^^v<^^v<>>^^>^v^>v<<<<^<>v^><<>>><v>><>>^<<<^<^^>v<>>v<>vv<<^<<><<^>v^^^vv^>vvvv>>v>v^><vv^<<><^>>>^<<<^<^<^>v<>>v>>vv^^><<<<^^^v>><<^>>v<><><<>^><^><^v<>v^>>>v<^><^<>^v><^><^^^><^^v^<<><>>^>v^<^v^vv<><^>vv^>v^vvv^<>>^><^<^<>^<<>^v>^>>^v^vv>>^v<<>^><^>>>v<<^^v>>><><><v^^vv>vv^<^v<>^v>>v^v>v<^^vv><>^v<<>v^<>v^>>v>vvv<^><><^^>^vv^>>v^>^<^^<><>><<>^^^><^v^v><<<><<^v^vv>v>><^>>>v<>v^^>>v<<>v>v<>v^^<>>v<^vv<>^<<>v>vv^^<>>^^^<>^^>^v>v>>>^v^v>^^v^v<^<^^><^<>><<>^>>^>^^><>v<><>><<<>>>>vv>>>^>>^v<^>v^^^v<><<<^<<<>>>>>^>vv<^v^<>^^v>vvv<>>>^v^^^v<<<<>>^^^<>v<^<<<>><>>v<^<>^><><^^^>^^<^^v^>><<^vv>^v>>^v>^^>^v>^vvv<>v^v^^<>vv^>>><>v<^><<<>^v>^v<<<^>^>^>v^v<<>^>>>>>v^>vv<<^v^v<<><^v>>vv<>>>>^vv>v^<>vv>v^vvv<><<^<^^^vv^<>^^^^<^><^<>v^>^>>vvv<<>><^vvv^<<^^<<>>>^<>>>v^^><>><<>>>>>>><>>>v<>>v^<>vv<><^^^^v^<<^<<^^>v<^vvv^v>>v>^>>v>^^><v<>vv<^v^vv><>v^>>v<^^^>^><^><>v>>>vvv>^v^<^^^^^v><>v><>v^v^vvvvv<>vv<<^<^>^^v^<<>^<^><<>v^<<^<>v<<^v>>^v<>^>>^^><>v^<^^>^<<<<>vv>^v^v<^^^><>^^<>>v^v<<^^^^v^<><^^<^^^<^v>^>^vv><<<^vvv>v<>v^vv^>>>v^v<>^v<<>^vv>v>v>v^<^>v^^<^>^^^^vv>^^><^>vv^>>^^v>><<<<^><>v<>^^^><<^>v^>^^<^>>><>>>>>^>^><>v>v^v^^><<>vv^v>v^<^<>^^<^>v>^<><<^<^<^>^>^>^^v^<<^^v^^<^<>><^>v>>^^<>^^^<<<^v<^vv>^<<<vv>>>v><>>><>>v<<<>^v>v<^>><^><>^v^>^v>^v<<><<^<>>v>^><>^>><>><^<^^>^v^^<>v^^^^<^v><>^^<<<><<<<<^^>v^vvvv>v<>>vv<^>^v^>v<^vv^v<<><v^v>^^><><^v><>>><<>^vv<>v>>v<^v>>>vv>v>^vv<<>^^vvvv<>^<^<<>^>><^v>vv^^v<<^^><<>v^^<><>^>^>^>v<^^v^^>v<>vvv<^v<<<^^><^<v<>^>v><>^^<^^^>^v<<><<><>vv>v^<>v^><><v<>v>^<<<>vv>>vvv>^^vv^v^^<^^<>v^^<>v>>^^>^>^>v>><^>><>>^<<>><^>v<<<<<<<^v^v^<><v^>v^vv<<^^vv^>>>>^<>v<^v<>v>v^vv>vv>v>>>>vv^<<<v<<<<^^>^^v^><<^v^>^^vvv^>^<>vvvv^<><>v^^^>vv><><<<^^vvv<>><<^vv^>^<^>^^^<<vv^<^<<>^>^v><^>^^>>>vv^><^^vv><>^vv><<v^>v<^v^>>^^^^>vv>>vv^><^vv^vv<<^>vv>^v^^v^v>>>^vv<>v>^^^^<^>><>^v^^^>v<^^<<^^vvvv<^>><><^>>^><^<>v<><^>v><v<^vvv^^>v>^v^v^<>v>^>>vv>><^^^vv<><><<^vv<<>><^v>v^>vvv^v^<<^>^vv^>v^>v>^<<<<>v>^>^^>^<>^>^><<<^<<^<<^>^v>>>><<<>>>>>>^<^v<^>v<>vv<><>v>>^>>^>vv^^><<^>^^<<^>v<^>>vv>^<>v><^>v>>>>>^v<^<<>vv<<><<>v<^^^^v^^<^^^<^<<^>><>v<<>v>>><>v^vv>^>^>>vv^v<^v>vv^>v^v<^>vv<<^^v><^>>^^vv<^<>>v^^>>^v>>>^>>v>v<>v<^vv><>^<<^>vv>>><><>v^><>v^>v>v><^v<>^v<<^vv^><^^>><^^^<<<^>v>^v>>><^>><^>>>^^^<^>vv<><<^<^^>>^^^v^v^v>v>>><^>>>v>^vv<<^^^<^^vv>v<<>v>><<^>^<^>^v^>v><^<^vv>v>><>^<v^>^>><^^^v^v<><<>vvv<^^><>^>vvv>>>^><<>>>^vvv^v^>v<^<^>>^>v<^>^v<<><<<^>^<^^^>vv<^^^^vv<<>vv>>><^<^<>>>^>^>>^<<<<<^^v>^>^<>vvv^^<^><^>^^v>^vv^><^><^>>>v>^v>^>^v><^>v^>^<><<><>vvvv^>^>>v<>^><^>^>^^v^v>v<>^v^><^>>v>v^><<<^>>^<>^<>>v><>>v^>^>^^<>>v^>^>vv^^vv<>v<>^v>^^><^>vv^<^v^<<^<^<><>>>^v^<<^><^>vvv<^>vv^>v<<<>^<>v><^^<>^<^><>vvvv^v^^^>v<>>><<>vvv<<^^^>v>v>>v<^^v>^><^<><<>v^^^vv<>^>^^vv>^<<^v<^v>>>^>>><^<<>^v>>^>vv<<^v>v^^v^>><<^v<<<<>v>v>v^^<^><>^^<<vv<>>>^>>v<>^<>v>v^v>^>><<^^<^^v><<vvv^vv><>><<<^<<>^<^<>>vvv<>^<>v^v<><>>v^v><<>>>vvv>v<>^>>^><^>vv<<>>v<<^><>v>>^^^>^<<>><^<<>>>><^^>vv<>^<>vvvvv^vv<>>^<<><>^^vvv>>>vv<<^^><^v^^v<>^^>^><^>v^^^^v<^<vv^^>v^vv>v><>>vv>^<^>v^v^^v>^>vv^>v^v>^^v<<^>^^<<>^><^v>>>vv^>^^>vvvv>>v<^^>>>v^<><^<^^vv^^>v^<>^^^>>><^^v>v>^<<>^vvv^>^^^>>v>^v><<><<>v<^<<>^><>^>vv>^^^v<<^v^vvv^^>^vv^<^>^>^^v>v^>^<<><<^>v>>vv^vv>>^<<^<^^<^^>v^^^<^<>^<>>^v<^vvv^^v^<><^>>>>>v><><<<>vv<^v>><<>vvv<><v^^>>^>^v>><><^^v<>><>>v^>^<<<>><><^^<>>v<><^vv<^v>^<<<>^<><^>><<>^>v>^^^v>>^<^^v>^><<><>>^>>^<^v<>^>^>vv>^vvv<^>^<<^^<>^^^^vvv<>^vv^^<^>>><>v^<><^<<^>v^^v<>>^vv<>v^^<>>v^vvvvv<>>><^>vv>v^v^^^><^>^^^^v<><^v<<>v^>v>>vv<<>^vvv>^^vv^><>>^>>^>v><>>^^v>^>^>>>^>v<^v>v>^<^^^^^>>v>v<<^>^^^>><<^><>v<>^^^vv<>^^>><<^^>v>vv>vv>v^>^v>v^^<>>><>v><>vvv^^v>^^>^vvvv^>^<>^vvvv>>><>^<^vv<>^v<^v<>^vvv<<>>>^><^^^<^^v^>v<>v^v><>>>^vvv><^vv>v^<^<^v>>v^^>^vvv^v<^<>>^<>>>^^<><^^vv<>^vv^<>>>>^^<<^^<>vv^^><>^^^^v<><><>vvv>^v^>>vv<<^v<<>>^><^>>>^<^<^^>vv^<<^<>>^^><><^^>v<^v^vv>><^^<<^>>v>v<^^^<^><^^vv>^vv<^v><^<><^^^>>^<><^>>>v^>>>>v<><^^>v<^<^>>^>vv>^^v^v^<<<<^v^><<^<><<<><<<>v>>vv><<^<^<>^^^^<>v<<<vv<>vv^^^>><>vv^><>>^vv<<><^^vv<>v^>>^<<>^v< \ No newline at end of file diff --git a/2015/day3.py b/2015/day3.py new file mode 100644 index 0000000..e324a3c --- /dev/null +++ b/2015/day3.py @@ -0,0 +1,47 @@ +with open('day3-input', 'r') as file: + data = file.readlines() + +x = 0 +y = 0 +houses = set() +houses.add((x, y)) +for c in data[0]: + if c == '>': + x += 1 + elif c == '<': + x -= 1 + elif c == '^': + y += 1 + elif c == 'v': + y -= 1 + houses.add((x, y)) +print(len(houses)) # Part 1 + +x1 = 0 +y1 = 0 +x2 = 0 +y2 = 0 +houses2 = set() +houses2.add((0, 0)) +for i, c in enumerate(data[0]): + if i%2: + if c == '>': + x1 += 1 + elif c == '<': + x1 -= 1 + elif c == '^': + y1 += 1 + elif c == 'v': + y1 -= 1 + houses2.add((x1, y1)) + else: + if c == '>': + x2 += 1 + elif c == '<': + x2 -= 1 + elif c == '^': + y2 += 1 + elif c == 'v': + y2 -= 1 + houses2.add((x2, y2)) +print(len(houses2)) # Part 2 diff --git a/2015/day4.py b/2015/day4.py new file mode 100644 index 0000000..e80bb82 --- /dev/null +++ b/2015/day4.py @@ -0,0 +1,15 @@ +data = 'yzbqklnj' +from hashlib import md5 +i = 0 +while True: + i += 1 + if md5(f'{data}{i}'.encode('utf-8')).hexdigest().startswith('00000'): + print(i) # Part 1 + break + +i -= 1 # Just in case the first hit was 6 zeros +while True: + i += 1 + if md5(f'{data}{i}'.encode('utf-8')).hexdigest().startswith('000000'): + print(i) # Part 2 + break diff --git a/2015/day5-input b/2015/day5-input new file mode 100644 index 0000000..a9b6e77 --- /dev/null +++ b/2015/day5-input @@ -0,0 +1,1000 @@ +sszojmmrrkwuftyv +isaljhemltsdzlum +fujcyucsrxgatisb +qiqqlmcgnhzparyg +oijbmduquhfactbc +jqzuvtggpdqcekgk +zwqadogmpjmmxijf +uilzxjythsqhwndh +gtssqejjknzkkpvw +wrggegukhhatygfi +vhtcgqzerxonhsye +tedlwzdjfppbmtdx +iuvrelxiapllaxbg +feybgiimfthtplui +qxmmcnirvkzfrjwd +vfarmltinsriqxpu +oanqfyqirkraesfq +xilodxfuxphuiiii +yukhnchvjkfwcbiq +bdaibcbzeuxqplop +ivegnnpbiyxqsion +ybahkbzpditgwdgt +dmebdomwabxgtctu +ibtvimgfaeonknoh +jsqraroxudetmfyw +dqdbcwtpintfcvuz +tiyphjunlxddenpj +fgqwjgntxagidhah +nwenhxmakxqkeehg +zdoheaxqpcnlhnen +tfetfqojqcdzlpbm +qpnxkuldeiituggg +xwttlbdwxohahwar +hjkwzadmtrkegzye +koksqrqcfwcaxeof +wulwmrptktliyxeq +gyufbedqhhyqgqzj +txpunzodohikzlmj +jloqfuejfkemcrvu +amnflshcheuddqtc +pdvcsduggcogbiia +yrioavgfmeafjpcz +uyhbtmbutozzqfvq +mwhgfwsgyuwcdzik +auqylgxhmullxpaa +lgelzivplaeoivzh +uyvcepielfcmswoa +qhirixgwkkccuzlp +zoonniyosmkeejfg +iayfetpixkedyana +ictqeyzyqswdskiy +ejsgqteafvmorwxe +lhaiqrlqqwfbrqdx +ydjyboqwhfpqfydc +dwhttezyanrnbybv +edgzkqeqkyojowvr +rmjfdwsqamjqehdq +ozminkgnkwqctrxz +bztjhxpjthchhfcd +vrtioawyxkivrpiq +dpbcsznkpkaaclyy +vpoypksymdwttpvz +hhdlruwclartkyap +bqkrcbrksbzcggbo +jerbbbnxlwfvlaiw +dwkasufidwjrjfbf +kkfxtjhbnmqbmfwf +vmnfziwqxmioukmj +rqxvcultipkecdtu +fhmfdibhtjzkiqsd +hdpjbuzzbyafqrpd +emszboysjuvwwvts +msyigmwcuybfiooq +druyksfnbluvnwoh +fvgstvynnfbvxhsx +bmzalvducnqtuune +lzwkzfzttsvpllei +olmplpvjamynfyfd +padcwfkhystsvyfb +wjhbvxkwtbfqdilb +hruaqjwphonnterf +bufjobjtvxtzjpmj +oiedrjvmlbtwyyuy +sgiemafwfztwsyju +nsoqqfudrtwszyqf +vonbxquiiwxnazyl +yvnmjxtptujwqudn +rrnybqhvrcgwvrkq +taktoxzgotzxntfu +quffzywzpxyaepxa +rfvjebfiddcfgmwv +iaeozntougqwnzoh +scdqyrhoqmljhoil +bfmqticltmfhxwld +brbuktbyqlyfpsdl +oidnyhjkeqenjlhd +kujsaiqojopvrygg +vebzobmdbzvjnjtk +uunoygzqjopwgmbg +piljqxgicjzgifso +ikgptwcjzywswqnw +pujqsixoisvhdvwi +trtuxbgigogfsbbk +mplstsqclhhdyaqk +gzcwflvmstogdpvo +tfjywbkmimyyqcjd +gijutvhruqcsiznq +ibxkhjvzzxgavkha +btnxeqvznkxjsgmq +tjgofgauxaelmjoq +sokshvyhlkxerjrv +ltogbivktqmtezta +uduwytzvqvfluyuf +msuckpthtgzhdxan +fqmcglidvhvpirzr +gwztkqpcwnutvfga +bsjfgsrntdhlpqbx +xloczbqybxmiopwt +orvevzyjliomkkgu +mzjbhmfjjvaziget +tlsdxuhwdmghdyjb +atoecyjhwmznaewi +pyxpyvvipbqibiox +ajbfmpqqobfsmesj +siknbzefjblnohgd +eqfhgewbblwdfkmc +opylbscrotckkrbk +lbwxbofgjkzdxkle +ceixfjstaptdomvm +hnkrqxifjmmjktie +aqykzeuzvvetoygd +fouahjimfcisxima +prkzhutbqsyrhjzx +qqwliakathnsbzne +sayhgqtlcqqidqhj +ygduolbysehdudra +zricvxhdzznuxuce +ucvzakslykpgsixd +udirhgcttmyspgsb +yuwzppjzfsjhhdzi +gtqergjiuwookwre +xvxexbjyjkxovvwf +mlpaqhnnkqxrmwmm +ezuqbrjozwuqafhb +mcarusdthcbsonoq +weeguqeheeiigrue +pngtfugozxofaqxv +copphvbjcmfspenv +jiyahihykjjkdaya +gdqnmesvptuyrfwp +vbdscfywqmfxbohh +crtrfuxyjypzubrg +seihvevtxywxhflp +fvvpmgttnapklwou +qmqaqsajmqwhetpk +zetxvrgjmblxvakr +kpvwblrizaabmnhz +mwpvvzaaicntrkcp +clqyjiegtdsswqfm +ymrcnqgcpldgfwtm +nzyqpdenetncgnwq +cmkzevgacnmdkqro +kzfdsnamjqbeirhi +kpxrvgvvxapqlued +rzskbnfobevzrtqu +vjoahbfwtydugzap +ykbbldkoijlvicbl +mfdmroiztsgjlasb +quoigfyxwtwprmdr +ekxjqafwudgwfqjm +obtvyjkiycxfcdpb +lhoihfnbuqelthof +eydwzitgxryktddt +rxsihfybacnpoyny +bsncccxlplqgygtw +rvmlaudsifnzhcqh +huxwsyjyebckcsnn +gtuqzyihwhqvjtes +zreeyomtngvztveq +nwddzjingsarhkxb +nuqxqtctpoldrlsh +wkvnrwqgjooovhpf +kwgueyiyffudtbyg +tpkzapnjxefqnmew +ludwccvkihagvxal +lfdtzhfadvabghna +njqmlsnrkcfhtvbb +cajzbqleghhnlgap +vmitdcozzvqvzatp +eelzefwqwjiywbcz +uyztcuptfqvymjpi +aorhnrpkjqqtgnfo +lfrxfdrduoeqmwwp +vszpjvbctblplinh +zexhadgpqfifcqrz +ueirfnshekpemqua +qfremlntihbwabtb +nwznunammfexltjc +zkyieokaaogjehwt +vlrxgkpclzeslqkq +xrqrwfsuacywczhs +olghlnfjdiwgdbqc +difnlxnedpqcsrdf +dgpuhiisybjpidsj +vlwmwrikmitmoxbt +sazpcmcnviynoktm +pratafauetiknhln +ilgteekhzwlsfwcn +ywvwhrwhkaubvkbl +qlaxivzwxyhvrxcf +hbtlwjdriizqvjfb +nrmsononytuwslsa +mpxqgdthpoipyhjc +mcdiwmiqeidwcglk +vfbaeavmjjemfrmo +qzcbzmisnynzibrc +shzmpgxhehhcejhb +wirtjadsqzydtyxd +qjlrnjfokkqvnpue +dxawdvjntlbxtuqc +wttfmnrievfestog +eamjfvsjhvzzaobg +pbvfcwzjgxahlrag +omvmjkqqnobvnzkn +lcwmeibxhhlxnkzv +uiaeroqfbvlazegs +twniyldyuonfyzqw +wgjkmsbwgfotdabi +hnomamxoxvrzvtew +ycrcfavikkrxxfgw +isieyodknagzhaxy +mgzdqwikzullzyco +mumezgtxjrrejtrs +nwmwjcgrqiwgfqel +wjgxmebfmyjnxyyp +durpspyljdykvzxf +zuslbrpooyetgafh +kuzrhcjwbdouhyme +wyxuvbciodscbvfm +kbnpvuqwmxwfqtqe +zddzercqogdpxmft +sigrdchxtgavzzjh +lznjolnorbuddgcs +ycnqabxlcajagwbt +bnaudeaexahdgxsj +rlnykxvoctfwanms +jngyetkoplrstfzt +tdpxknwacksotdub +yutqgssfoptvizgr +lzmqnxeqjfnsxmsa +iqpgfsfmukovsdgu +qywreehbidowtjyz +iozamtgusdctvnkw +ielmujhtmynlwcfd +hzxnhtbnmmejlkyf +ftbslbzmiqkzebtd +bcwdqgiiizmohack +dqhfkzeddjzbdlxu +mxopokqffisxosci +vciatxhtuechbylk +khtkhcvelidjdena +blatarwzfqcapkdt +elamngegnczctcck +xeicefdbwrxhuxuf +sawvdhjoeahlgcdr +kmdcimzsfkdfpnir +axjayzqlosrduajb +mfhzreuzzumvoggr +iqlbkbhrkptquldb +xcvztvlshiefuhgb +pkvwyqmyoazocrio +ajsxkdnerbmhyxaj +tudibgsbnpnizvsi +cxuiydkgdccrqvkh +cyztpjesdzmbcpot +nnazphxpanegwitx +uphymczbmjalmsct +yyxiwnlrogyzwqmg +gmqwnahjvvdyhnfa +utolskxpuoheugyl +mseszdhyzoyavepd +ycqknvbuvcjfgmlc +sknrxhxbfpvpeorn +zqxqjetooqcodwml +sesylkpvbndrdhsy +fryuxvjnsvnjrxlw +mfxusewqurscujnu +mbitdjjtgzchvkfv +ozwlyxtaalxofovd +wdqcduaykxbunpie +rlnhykxiraileysk +wgoqfrygttlamobg +kflxzgxvcblkpsbz +tmkisflhativzhde +owsdrfgkaamogjzd +gaupjkvkzavhfnes +wknkurddcknbdleg +lltviwincmbtduap +qwzvspgbcksyzzmb +ydzzkumecryfjgnk +jzvmwgjutxoysaam +icrwpyhxllbardkr +jdopyntshmvltrve +afgkigxcuvmdbqou +mfzzudntmvuyhjzt +duxhgtwafcgrpihc +tsnhrkvponudumeb +sqtvnbeiigdzbjgv +eczmkqwvnsrracuo +mhehsgqwiczaiaxv +kaudmfvifovrimpd +lupikgivechdbwfr +mwaaysrndiutuiqx +aacuiiwgaannunmm +tjqjbftaqitukwzp +lrcqyskykbjpaekn +lirrvofbcqpjzxmr +jurorvzpplyelfml +qonbllojmloykjqe +sllkzqujfnbauuqp +auexjwsvphvikali +usuelbssqmbrkxyc +wyuokkfjexikptvv +wmfedauwjgbrgytl +sfwvtlzzebxzmuvw +rdhqxuechjsjcvaf +kpavhqkukugocsxu +ovnjtumxowbxduts +zgerpjufauptxgat +pevvnzjfwhjxdoxq +pmmfwxajgfziszcs +difmeqvaghuitjhs +icpwjbzcmlcterwm +ngqpvhajttxuegyh +mosjlqswdngwqsmi +frlvgpxrjolgodlu +eazwgrpcxjgoszeg +bbtsthgkjrpkiiyk +tjonoglufuvsvabe +xhkbcrofytmbzrtk +kqftfzdmpbxjynps +kmeqpocbnikdtfyv +qjjymgqxhnjwxxhp +dmgicrhgbngdtmjt +zdxrhdhbdutlawnc +afvoekuhdboxghvx +hiipezngkqcnihty +bbmqgheidenweeov +suprgwxgxwfsgjnx +adeagikyamgqphrj +zzifqinoeqaorjxg +adhgppljizpaxzld +lvxyieypvvuqjiyc +nljoakatwwwoovzn +fcrkfxclcacshhmx +ownnxqtdhqbgthch +lmfylrcdmdkgpwnj +hlwjfbvlswbzpbjr +mkofhdtljdetcyvp +synyxhifbetzarpo +agnggugngadrcxoc +uhttadmdmhidpyjw +ohfwjfhunalbubpr +pzkkkkwrlvxiuysn +kmidbxmyzkjrwjhu +egtitdydwjxmajnw +civoeoiuwtwgbqqs +dfptsguzfinqoslk +tdfvkreormspprer +zvnvbrmthatzztwi +ffkyddccrrfikjde +hrrmraevdnztiwff +qaeygykcpbtjwjbr +purwhitkmrtybslh +qzziznlswjaussel +dfcxkvdpqccdqqxj +tuotforulrrytgyn +gmtgfofgucjywkev +wkyoxudvdkbgpwhd +qbvktvfvipftztnn +otckgmojziezmojb +inxhvzbtgkjxflay +qvxapbiatuudseno +krpvqosbesnjntut +oqeukkgjsfuqkjbb +prcjnyymnqwqksiz +vuortvjxgckresko +orqlyobvkuwgathr +qnpyxlnazyfuijox +zwlblfkoklqmqzkw +hmwurwtpwnrcsanl +jzvxohuakopuzgpf +sfcpnxrviphhvxmx +qtwdeadudtqhbely +dbmkmloasqphnlgj +olylnjtkxgrubmtk +nxsdbqjuvwrrdbpq +wbabpirnpcsmpipw +hjnkyiuxpqrlvims +enzpntcjnxdpuqch +vvvqhlstzcizyimn +triozhqndbttglhv +fukvgteitwaagpzx +uhcvukfbmrvskpen +tizcyupztftzxdmt +vtkpnbpdzsaluczz +wodfoyhoekidxttm +otqocljrmwfqbxzu +linfbsnfvixlwykn +vxsluutrwskslnye +zbshygtwugixjvsi +zdcqwxvwytmzhvoo +wrseozkkcyctrmei +fblgtvogvkpqzxiy +opueqnuyngegbtnf +qxbovietpacqqxok +zacrdrrkohfygddn +gbnnvjqmkdupwzpq +qgrgmsxeotozvcak +hnppukzvzfmlokid +dzbheurndscrrtcl +wbgdkadtszebbrcw +fdmzppzphhpzyuiz +bukomunhrjrypohj +ohodhelegxootqbj +rsplgzarlrknqjyh +punjjwpsxnhpzgvu +djdfahypfjvpvibm +mlgrqsmhaozatsvy +xwktrgyuhqiquxgn +wvfaoolwtkbrisvf +plttjdmguxjwmeqr +zlvvbwvlhauyjykw +cigwkbyjhmepikej +masmylenrusgtyxs +hviqzufwyetyznze +nzqfuhrooswxxhus +pdbdetaqcrqzzwxf +oehmvziiqwkzhzib +icgpyrukiokmytoy +ooixfvwtiafnwkce +rvnmgqggpjopkihs +wywualssrmaqigqk +pdbvflnwfswsrirl +jeaezptokkccpbuj +mbdwjntysntsaaby +ldlgcawkzcwuxzpz +lwktbgrzswbsweht +ecspepmzarzmgpjm +qmfyvulkmkxjncai +izftypvwngiukrns +zgmnyjfeqffbooww +nyrkhggnprhedows +yykzzrjmlevgffah +mavaemfxhlfejfki +cmegmfjbkvpncqwf +zxidlodrezztcrij +fseasudpgvgnysjv +fupcimjupywzpqzp +iqhgokavirrcvyys +wjmkcareucnmfhui +nftflsqnkgjaexhq +mgklahzlcbapntgw +kfbmeavfxtppnrxn +nuhyvhknlufdynvn +nviogjxbluwrcoec +tyozixxxaqiuvoys +kgwlvmvgtsvxojpr +moeektyhyonfdhrb +kahvevmmfsmiiqex +xcywnqzcdqtvhiwd +fnievhiyltbvtvem +jlmndqufirwgtdxd +muypbfttoeelsnbs +rypxzbnujitfwkou +ubmmjbznskildeoj +ofnmizdeicrmkjxp +rekvectjbmdnfcib +yohrojuvdexbctdh +gwfnfdeibynzjmhz +jfznhfcqdwlpjull +scrinzycfhwkmmso +mskutzossrwoqqsi +rygoebkzgyzushhr +jpjqiycflqkexemx +arbufysjqmgaapnl +dbjerflevtgweeoj +snybnnjlmwjvhois +fszuzplntraprmbj +mkvaatolvuggikvg +zpuzuqygoxesnuyc +wnpxvmxvllxalulm +eivuuafkvudeouwy +rvzckdyixetfuehr +qgmnicdoqhveahyx +miawwngyymshjmpj +pvckyoncpqeqkbmx +llninfenrfjqxurv +kzbjnlgsqjfuzqtp +rveqcmxomvpjcwte +bzotkawzbopkosnx +ktqvpiribpypaymu +wvlzkivbukhnvram +uohntlcoguvjqqdo +ajlsiksjrcnzepkt +xsqatbldqcykwusd +ihbivgzrwpmowkop +vfayesfojmibkjpb +uaqbnijtrhvqxjtb +hhovshsfmvkvymba +jerwmyxrfeyvxcgg +hncafjwrlvdcupma +qyvigggxfylbbrzt +hiiixcyohmvnkpgk +mmitpwopgxuftdfu +iaxderqpceboixoa +zodfmjhuzhnsqfcb +sthtcbadrclrazsi +bkkkkcwegvypbrio +wmpcofuvzemunlhj +gqwebiifvqoeynro +juupusqdsvxcpsgv +rbhdfhthxelolyse +kjimpwnjfrqlqhhz +rcuigrjzarzpjgfq +htxcejfyzhydinks +sxucpdxhvqjxxjwf +omsznfcimbcwaxal +gufmtdlhgrsvcosb +bssshaqujtmluerz +uukotwjkstgwijtr +kbqkneobbrdogrxk +ljqopjcjmelgrakz +rwtfnvnzryujwkfb +dedjjbrndqnilbeh +nzinsxnpptzagwlb +lwqanydfirhnhkxy +hrjuzfumbvfccxno +okismsadkbseumnp +sfkmiaiwlktxqvwa +hauwpjjwowbunbjj +nowkofejwvutcnui +bqzzppwoslaeixro +urpfgufwbtzenkpj +xgeszvuqwxeykhef +yxoldvkyuikwqyeq +onbbhxrnmohzskgg +qcikuxakrqeugpoa +lnudcqbtyzhlpers +nxduvwfrgzaailgl +xniuwvxufzxjjrwz +ljwithcqmgvntjdj +awkftfagrfzywkhs +uedtpzxyubeveuek +bhcqdwidbjkqqhzl +iyneqjdmlhowwzxx +kvshzltcrrururty +zgfpiwajegwezupo +tkrvyanujjwmyyri +ercsefuihcmoaiep +ienjrxpmetinvbos +jnwfutjbgenlipzq +bgohjmrptfuamzbz +rtsyamajrhxbcncw +tfjdssnmztvbnscs +bgaychdlmchngqlp +kfjljiobynhwfkjo +owtdxzcpqleftbvn +ltjtimxwstvzwzjj +wbrvjjjajuombokf +zblpbpuaqbkvsxye +gwgdtbpnlhyqspdi +abipqjihjqfofmkx +nlqymnuvjpvvgova +avngotmhodpoufzn +qmdyivtzitnrjuae +xfwjmqtqdljuerxi +csuellnlcyqaaamq +slqyrcurcyuoxquo +dcjmxyzbzpohzprl +uqfnmjwniyqgsowb +rbmxpqoblyxdocqc +ebjclrdbqjhladem +ainnfhxnsgwqnmyo +eyytjjwhvodtzquf +iabjgmbbhilrcyyp +pqfnehkivuelyccc +xgjbyhfgmtseiimt +jwxyqhdbjiqqqeyy +gxsbrncqkmvaryln +vhjisxjkinaejytk +seexagcdmaedpcvh +lvudfgrcpjxzdpvd +fxtegyrqjzhmqean +dnoiseraqcoossmc +nwrhmwwbykvwmgep +udmzskejvizmtlce +hbzvqhvudfdlegaa +cghmlfqejbxewskv +bntcmjqfwomtbwsb +qezhowyopjdyhzng +todzsocdkgfxanbz +zgjkssrjlwxuhwbk +eibzljqsieriyrzr +wamxvzqyycrxotjp +epzvfkispwqynadu +dwlpfhtrafrxlyie +qhgzujhgdruowoug +girstvkahaemmxvh +baitcrqmxhazyhbl +xyanqcchbhkajdmc +gfvjmmcgfhvgnfdq +tdfdbslwncbnkzyz +jojuselkpmnnbcbb +hatdslkgxtqpmavj +dvelfeddvgjcyxkj +gnsofhkfepgwltse +mdngnobasfpewlno +qssnbcyjgmkyuoga +glvcmmjytmprqwvn +gwrixumjbcdffsdl +lozravlzvfqtsuiq +sicaflbqdxbmdlch +inwfjkyyqbwpmqlq +cuvszfotxywuzhzi +igfxyoaacoarlvay +ucjfhgdmnjvgvuni +rvvkzjsytqgiposh +jduinhjjntrmqroz +yparkxbgsfnueyll +lyeqqeisxzfsqzuj +woncskbibjnumydm +lltucklragtjmxtl +ubiyvmyhlesfxotj +uecjseeicldqrqww +xxlxkbcthufnjbnm +lhqijovvhlffpxga +fzdgqpzijitlogjz +efzzjqvwphomxdpd +jvgzvuyzobeazssc +hejfycgxywfjgbfw +yhjjmvkqfbnbliks +sffvfyywtlntsdsz +dwmxqudvxqdenrur +asnukgppdemxrzaz +nwqfnumblwvdpphx +kqsmkkspqvxzuket +cpnraovljzqiquaz +qrzgrdlyyzbyykhg +opoahcbiydyhsmqe +hjknnfdauidjeydr +hczdjjlygoezadow +rtflowzqycimllfv +sfsrgrerzlnychhq +bpahuvlblcolpjmj +albgnjkgmcrlaicl +pijyqdhfxpaxzdex +eeymiddvcwkpbpux +rqwkqoabywgggnln +vckbollyhgbgmgwh +ylzlgvnuvpynybkm +hpmbxtpfosbsjixt +ocebeihnhvkhjfqz +tvctyxoujdgwayze +efvhwxtuhapqxjen +rusksgefyidldmpo +nkmtjvddfmhirmzz +whvtsuadwofzmvrt +iiwjqvsdxudhdzzk +gucirgxaxgcassyo +rmhfasfzexeykwmr +hynlxcvsbgosjbis +huregszrcaocueen +pifezpoolrnbdqtv +unatnixzvdbqeyox +xtawlpduxgacchfe +bdvdbflqfphndduf +xtdsnjnmzccfptyt +nkhsdkhqtzqbphhg +aqcubmfkczlaxiyb +moziflxpsfubucmv +srdgnnjtfehiimqx +pwfalehdfyykrohf +sysxssmvewyfjrve +brsemdzosgqvvlxe +bimbjoshuvflkiat +hkgjasmljkpkwwku +sbnmwjvodygobpqc +bbbqycejueruihhd +corawswvlvneipyc +gcyhknmwsczcxedh +kppakbffdhntmcqp +ynulzwkfaemkcefp +pyroowjekeurlbii +iwksighrswdcnmxf +glokrdmugreygnsg +xkmvvumnfzckryop +aesviofpufygschi +csloawlirnegsssq +fkqdqqmlzuxbkzbc +uzlhzcfenxdfjdzp +poaaidrktteusvyf +zrlyfzmjzfvivcfr +qwjulskbniitgqtx +gjeszjksbfsuejki +vczdejdbfixbduaq +knjdrjthitjxluth +jweydeginrnicirl +bottrfgccqhyycsl +eiquffofoadmbuhk +lbqfutmzoksscswf +xfmdvnvfcnzjprba +uvugkjbkhlaoxmyx +wadlgtpczgvcaqqv +inzrszbtossflsxk +dbzbtashaartczrj +qbjiqpccefcfkvod +hluujmokjywotvzy +thwlliksfztcmwzh +arahybspdaqdexrq +nuojrmsgyipdvwyx +hnajdwjwmzattvst +sulcgaxezkprjbgu +rjowuugwdpkjtypw +oeugzwuhnrgiaqga +wvxnyymwftfoswij +pqxklzkjpcqscvde +tuymjzknntekglqj +odteewktugcwlhln +exsptotlfecmgehc +eeswfcijtvzgrqel +vjhrkiwmunuiwqau +zhlixepkeijoemne +pavfsmwesuvebzdd +jzovbklnngfdmyws +nbajyohtzfeoiixz +ciozmhrsjzrwxvhz +gwucrxieqbaqfjuv +uayrxrltnohexawc +flmrbhwsfbcquffm +gjyabmngkitawlxc +rwwtggvaygfbovhg +xquiegaisynictjq +oudzwuhexrwwdbyy +lengxmguyrwhrebb +uklxpglldbgqsjls +dbmvlfeyguydfsxq +zspdwdqcrmtmdtsc +mqfnzwbfqlauvrgc +amcrkzptgacywvhv +ndxmskrwrqysrndf +mwjyhsufeqhwisju +srlrukoaenyevykt +tnpjtpwawrxbikct +geczalxmgxejulcv +tvkcbqdhmuwcxqci +tiovluvwezwwgaox +zrjhtbgajkjqzmfo +vcrywduwsklepirs +lofequdigsszuioy +wxsdzomkjqymlzat +iabaczqtrfbmypuy +ibdlmudbajikcncr +rqcvkzsbwmavdwnv +ypxoyjelhllhbeog +fdnszbkezyjbttbg +uxnhrldastpdjkdz +xfrjbehtxnlyzcka +omjyfhbibqwgcpbv +eguucnoxaoprszmp +xfpypldgcmcllyzz +aypnmgqjxjqceelv +mgzharymejlafvgf +tzowgwsubbaigdok +ilsehjqpcjwmylxc +pfmouwntfhfnmrwk +csgokybgdqwnduwp +eaxwvxvvwbrovypz +nmluqvobbbmdiwwb +lnkminvfjjzqbmio +mjiiqzycqdhfietz +towlrzriicyraevq +obiloewdvbrsfwjo +lmeooaajlthsfltw +ichygipzpykkesrw +gfysloxmqdsfskvt +saqzntehjldvwtsx +pqddoemaufpfcaew +mjrxvbvwcreaybwe +ngfbrwfqnxqosoai +nesyewxreiqvhald +kqhqdlquywotcyfy +liliptyoqujensfi +nsahsaxvaepzneqq +zaickulfjajhctye +gxjzahtgbgbabtht +koxbuopaqhlsyhrp +jhzejdjidqqtjnwe +dekrkdvprfqpcqki +linwlombdqtdeyop +dvckqqbnigdcmwmx +yaxygbjpzkvnnebv +rlzkdkgaagmcpxah +cfzuyxivtknirqvt +obivkajhsjnrxxhn +lmjhayymgpseuynn +bbjyewkwadaipyju +lmzyhwomfypoftuu +gtzhqlgltvatxack +jfflcfaqqkrrltgq +txoummmnzfrlrmcg +ohemsbfuqqpucups +imsfvowcbieotlok +tcnsnccdszxfcyde +qkcdtkwuaquajazz +arcfnhmdjezdbqku +srnocgyqrlcvlhkb +mppbzvfmcdirbyfw +xiuarktilpldwgwd +ypufwmhrvzqmexpc +itpdnsfkwgrdujmj +cmpxnodtsswkyxkr +wayyxtjklfrmvbfp +mfaxphcnjczhbbwy +sjxhgwdnqcofbdra +pnxmujuylqccjvjm +ivamtjbvairwjqwl +deijtmzgpfxrclss +bzkqcaqagsynlaer +tycefobvxcvwaulz +ctbhnywezxkdsswf +urrxxebxrthtjvib +fpfelcigwqwdjucv +ngfcyyqpqulwcphb +rltkzsiipkpzlgpw +qfdsymzwhqqdkykc +balrhhxipoqzmihj +rnwalxgigswxomga +ghqnxeogckshphgr +lyyaentdizaumnla +exriodwfzosbeoib +speswfggibijfejk +yxmxgfhvmshqszrq +hcqhngvahzgawjga +qmhlsrfpesmeksur +eviafjejygakodla +kvcfeiqhynqadbzv +fusvyhowslfzqttg +girqmvwmcvntrwau +yuavizroykfkdekz +jmcwohvmzvowrhxf +kzimlcpavapynfue +wjudcdtrewfabppq +yqpteuxqgbmqfgxh +xdgiszbuhdognniu +jsguxfwhpftlcjoh +whakkvspssgjzxre +ggvnvjurlyhhijgm +krvbhjybnpemeptr +pqedgfojyjybfbzr +jzhcrsgmnkwwtpdo +yyscxoxwofslncmp +gzjhnxytmyntzths +iteigbnqbtpvqumi +zjevfzusnjukqpfw +xippcyhkfuounxqk +mcnhrcfonfdgpkyh +pinkcyuhjkexbmzj +lotxrswlxbxlxufs +fmqajrtoabpckbnu +wfkwsgmcffdgaqxg +qfrsiwnohoyfbidr +czfqbsbmiuyusaqs +ieknnjeecucghpoo +cevdgqnugupvmsge +gjkajcyjnxdrtuvr +udzhrargnujxiclq +zqqrhhmjwermjssg +ggdivtmgoqajydzz +wnpfsgtxowkjiivl +afbhqawjbotxnqpd +xjpkifkhfjeqifdn +oyfggzsstfhvticp +kercaetahymeawxy +khphblhcgmbupmzt +iggoqtqpvaebtiol +ofknifysuasshoya +qxuewroccsbogrbv +apsbnbkiopopytgu +zyahfroovfjlythh +bxhjwfgeuxlviydq +uvbhdtvaypasaswa +qamcjzrmesqgqdiz +hjnjyzrxntiycyel +wkcrwqwniczwdxgq +hibxlvkqakusswkx +mzjyuenepwdgrkty +tvywsoqslfsulses +jqwcwuuisrclircv +xanwaoebfrzhurct +ykriratovsvxxasf +qyebvtqqxbjuuwuo +telrvlwvriylnder +acksrrptgnhkeiaa +yemwfjhiqlzsvdxf +banrornfkcymmkcc +ytbhxvaeiigjpcgm +crepyazgxquposkn +xlqwdrytzwnxzwzv +xtrbfbwopxscftps +kwbytzukgseeyjla +qtfdvavvjogybxjg +ytbmvmrcxwfkgvzw +nbscbdskdeocnfzr +sqquwjbdxsxhcseg +ewqxhigqcgszfsuw +cvkyfcyfmubzwsee +dcoawetekigxgygd +ohgqnqhfimyuqhvi +otisopzzpvnhctte +bauieohjejamzien +ewnnopzkujbvhwce +aeyqlskpaehagdiv +pncudvivwnnqspxy +ytugesilgveokxcg +zoidxeelqdjesxpr +ducjccsuaygfchzj +smhgllqqqcjfubfc +nlbyyywergronmir +prdawpbjhrzsbsvj +nmgzhnjhlpcplmui +eflaogtjghdjmxxz +qolvpngucbkprrdc +ixywxcienveltgho +mwnpqtocagenkxut +iskrfbwxonkguywx +ouhtbvcaczqzmpua +srewprgddfgmdbao +dyufrltacelchlvu +czmzcbrkecixuwzz +dtbeojcztzauofuk +prrgoehpqhngfgmw +baolzvfrrevxsyke +zqadgxshwiarkzwh +vsackherluvurqqj +surbpxdulvcvgjbd +wqxytarcxzgxhvtx +vbcubqvejcfsgrac +zqnjfeapshjowzja +hekvbhtainkvbynx +knnugxoktxpvoxnh +knoaalcefpgtvlwm +qoakaunowmsuvkus +ypkvlzcduzlezqcb +ujhcagawtyepyogh +wsilcrxncnffaxjf +gbbycjuscquaycrk +aduojapeaqwivnly +ceafyxrakviagcjy +nntajnghicgnrlst +vdodpeherjmmvbje +wyyhrnegblwvdobn +xlfurpghkpbzhhif +xyppnjiljvirmqjo +kglzqahipnddanpi +omjateouxikwxowr +ocifnoopfglmndcx +emudcukfbadyijev +ooktviixetfddfmh +wtvrhloyjewdeycg +cgjncqykgutfjhvb +nkwvpswppeffmwad +hqbcmfhzkxmnrivg +mdskbvzguxvieilr +anjcvqpavhdloaqh +erksespdevjylenq +fadxwbmisazyegup +iyuiffjmcaahowhj +ygkdezmynmltodbv +fytneukxqkjattvh +woerxfadbfrvdcnz +iwsljvkyfastccoa +movylhjranlorofe +drdmicdaiwukemep +knfgtsmuhfcvvshg +ibstpbevqmdlhajn +tstwsswswrxlzrqs +estyydmzothggudf +jezogwvymvikszwa +izmqcwdyggibliet +nzpxbegurwnwrnca +kzkojelnvkwfublh +xqcssgozuxfqtiwi +tcdoigumjrgvczfv +ikcjyubjmylkwlwq +kqfivwystpqzvhan +bzukgvyoqewniivj +iduapzclhhyfladn +fbpyzxdfmkrtfaeg +yzsmlbnftftgwadz diff --git a/2015/day5.py b/2015/day5.py new file mode 100644 index 0000000..e3f391c --- /dev/null +++ b/2015/day5.py @@ -0,0 +1,34 @@ +with open('day5-input', 'r') as file: + data = [l.strip('\n') for l in file] + +naughty_substrings = ['ab', 'cd', 'pq', 'xy'] +vowels = set(['a', 'e', 'i', 'o', 'u']) +def is_nice(s): + for n in naughty_substrings: + if n in s: + return False + v_count = 0 + rep_count = 0 + last_char = '' + for c in s: + if c in vowels: + v_count += 1 + if c == last_char: + rep_count += 1 + last_char = c + return v_count >= 3 and rep_count > 0 +print(len([s for s in data if is_nice(s)])) # Part 1 + +def is_nice2(s): + spaced_rep = False + for a, b in zip(s[:-2], s[2:]): + if a == b: + spaced_rep = True + break + if not spaced_rep: + return False + for a, b in zip(s[:-1], s[1:]): + if s.count(a+b) > 1: + return True + return False +print(len([s for s in data if is_nice2(s)])) # Part 2 diff --git a/2015/day6-input b/2015/day6-input new file mode 100644 index 0000000..c4357c6 --- /dev/null +++ b/2015/day6-input @@ -0,0 +1,300 @@ +turn on 887,9 through 959,629 +turn on 454,398 through 844,448 +turn off 539,243 through 559,965 +turn off 370,819 through 676,868 +turn off 145,40 through 370,997 +turn off 301,3 through 808,453 +turn on 351,678 through 951,908 +toggle 720,196 through 897,994 +toggle 831,394 through 904,860 +toggle 753,664 through 970,926 +turn off 150,300 through 213,740 +turn on 141,242 through 932,871 +toggle 294,259 through 474,326 +toggle 678,333 through 752,957 +toggle 393,804 through 510,976 +turn off 6,964 through 411,976 +turn off 33,572 through 978,590 +turn on 579,693 through 650,978 +turn on 150,20 through 652,719 +turn off 782,143 through 808,802 +turn off 240,377 through 761,468 +turn off 899,828 through 958,967 +turn on 613,565 through 952,659 +turn on 295,36 through 964,978 +toggle 846,296 through 969,528 +turn off 211,254 through 529,491 +turn off 231,594 through 406,794 +turn off 169,791 through 758,942 +turn on 955,440 through 980,477 +toggle 944,498 through 995,928 +turn on 519,391 through 605,718 +toggle 521,303 through 617,366 +turn off 524,349 through 694,791 +toggle 391,87 through 499,792 +toggle 562,527 through 668,935 +turn off 68,358 through 857,453 +toggle 815,811 through 889,828 +turn off 666,61 through 768,87 +turn on 27,501 through 921,952 +turn on 953,102 through 983,471 +turn on 277,552 through 451,723 +turn off 64,253 through 655,960 +turn on 47,485 through 734,977 +turn off 59,119 through 699,734 +toggle 407,898 through 493,955 +toggle 912,966 through 949,991 +turn on 479,990 through 895,990 +toggle 390,589 through 869,766 +toggle 593,903 through 926,943 +toggle 358,439 through 870,528 +turn off 649,410 through 652,875 +turn on 629,834 through 712,895 +toggle 254,555 through 770,901 +toggle 641,832 through 947,850 +turn on 268,448 through 743,777 +turn off 512,123 through 625,874 +turn off 498,262 through 930,811 +turn off 835,158 through 886,242 +toggle 546,310 through 607,773 +turn on 501,505 through 896,909 +turn off 666,796 through 817,924 +toggle 987,789 through 993,809 +toggle 745,8 through 860,693 +toggle 181,983 through 731,988 +turn on 826,174 through 924,883 +turn on 239,228 through 843,993 +turn on 205,613 through 891,667 +toggle 867,873 through 984,896 +turn on 628,251 through 677,681 +toggle 276,956 through 631,964 +turn on 78,358 through 974,713 +turn on 521,360 through 773,597 +turn off 963,52 through 979,502 +turn on 117,151 through 934,622 +toggle 237,91 through 528,164 +turn on 944,269 through 975,453 +toggle 979,460 through 988,964 +turn off 440,254 through 681,507 +toggle 347,100 through 896,785 +turn off 329,592 through 369,985 +turn on 931,960 through 979,985 +toggle 703,3 through 776,36 +toggle 798,120 through 908,550 +turn off 186,605 through 914,709 +turn off 921,725 through 979,956 +toggle 167,34 through 735,249 +turn on 726,781 through 987,936 +toggle 720,336 through 847,756 +turn on 171,630 through 656,769 +turn off 417,276 through 751,500 +toggle 559,485 through 584,534 +turn on 568,629 through 690,873 +toggle 248,712 through 277,988 +toggle 345,594 through 812,723 +turn off 800,108 through 834,618 +turn off 967,439 through 986,869 +turn on 842,209 through 955,529 +turn on 132,653 through 357,696 +turn on 817,38 through 973,662 +turn off 569,816 through 721,861 +turn on 568,429 through 945,724 +turn on 77,458 through 844,685 +turn off 138,78 through 498,851 +turn on 136,21 through 252,986 +turn off 2,460 through 863,472 +turn on 172,81 through 839,332 +turn on 123,216 through 703,384 +turn off 879,644 through 944,887 +toggle 227,491 through 504,793 +toggle 580,418 through 741,479 +toggle 65,276 through 414,299 +toggle 482,486 through 838,931 +turn off 557,768 through 950,927 +turn off 615,617 through 955,864 +turn on 859,886 through 923,919 +turn on 391,330 through 499,971 +toggle 521,835 through 613,847 +turn on 822,787 through 989,847 +turn on 192,142 through 357,846 +turn off 564,945 through 985,945 +turn off 479,361 through 703,799 +toggle 56,481 through 489,978 +turn off 632,991 through 774,998 +toggle 723,526 through 945,792 +turn on 344,149 through 441,640 +toggle 568,927 through 624,952 +turn on 621,784 through 970,788 +toggle 665,783 through 795,981 +toggle 386,610 through 817,730 +toggle 440,399 through 734,417 +toggle 939,201 through 978,803 +turn off 395,883 through 554,929 +turn on 340,309 through 637,561 +turn off 875,147 through 946,481 +turn off 945,837 through 957,922 +turn off 429,982 through 691,991 +toggle 227,137 through 439,822 +toggle 4,848 through 7,932 +turn off 545,146 through 756,943 +turn on 763,863 through 937,994 +turn on 232,94 through 404,502 +turn off 742,254 through 930,512 +turn on 91,931 through 101,942 +toggle 585,106 through 651,425 +turn on 506,700 through 567,960 +turn off 548,44 through 718,352 +turn off 194,827 through 673,859 +turn off 6,645 through 509,764 +turn off 13,230 through 821,361 +turn on 734,629 through 919,631 +toggle 788,552 through 957,972 +toggle 244,747 through 849,773 +turn off 162,553 through 276,887 +turn off 569,577 through 587,604 +turn off 799,482 through 854,956 +turn on 744,535 through 909,802 +toggle 330,641 through 396,986 +turn off 927,458 through 966,564 +toggle 984,486 through 986,913 +toggle 519,682 through 632,708 +turn on 984,977 through 989,986 +toggle 766,423 through 934,495 +turn on 17,509 through 947,718 +turn on 413,783 through 631,903 +turn on 482,370 through 493,688 +turn on 433,859 through 628,938 +turn off 769,549 through 945,810 +turn on 178,853 through 539,941 +turn off 203,251 through 692,433 +turn off 525,638 through 955,794 +turn on 169,70 through 764,939 +toggle 59,352 through 896,404 +toggle 143,245 through 707,320 +turn off 103,35 through 160,949 +toggle 496,24 through 669,507 +turn off 581,847 through 847,903 +turn on 689,153 through 733,562 +turn on 821,487 through 839,699 +turn on 837,627 through 978,723 +toggle 96,748 through 973,753 +toggle 99,818 through 609,995 +turn on 731,193 through 756,509 +turn off 622,55 through 813,365 +turn on 456,490 through 576,548 +turn on 48,421 through 163,674 +turn off 853,861 through 924,964 +turn off 59,963 through 556,987 +turn on 458,710 through 688,847 +toggle 12,484 through 878,562 +turn off 241,964 through 799,983 +turn off 434,299 through 845,772 +toggle 896,725 through 956,847 +turn on 740,289 through 784,345 +turn off 395,840 through 822,845 +turn on 955,224 through 996,953 +turn off 710,186 through 957,722 +turn off 485,949 through 869,985 +turn on 848,209 through 975,376 +toggle 221,241 through 906,384 +turn on 588,49 through 927,496 +turn on 273,332 through 735,725 +turn on 505,962 through 895,962 +toggle 820,112 through 923,143 +turn on 919,792 through 978,982 +toggle 489,461 through 910,737 +turn off 202,642 through 638,940 +turn off 708,953 through 970,960 +toggle 437,291 through 546,381 +turn on 409,358 through 837,479 +turn off 756,279 through 870,943 +turn off 154,657 through 375,703 +turn off 524,622 through 995,779 +toggle 514,221 through 651,850 +toggle 808,464 through 886,646 +toggle 483,537 through 739,840 +toggle 654,769 through 831,825 +turn off 326,37 through 631,69 +turn off 590,570 through 926,656 +turn off 881,913 through 911,998 +turn on 996,102 through 998,616 +turn off 677,503 through 828,563 +turn on 860,251 through 877,441 +turn off 964,100 through 982,377 +toggle 888,403 through 961,597 +turn off 632,240 through 938,968 +toggle 731,176 through 932,413 +turn on 5,498 through 203,835 +turn on 819,352 through 929,855 +toggle 393,813 through 832,816 +toggle 725,689 through 967,888 +turn on 968,950 through 969,983 +turn off 152,628 through 582,896 +turn off 165,844 through 459,935 +turn off 882,741 through 974,786 +turn off 283,179 through 731,899 +toggle 197,366 through 682,445 +turn on 106,309 through 120,813 +toggle 950,387 through 967,782 +turn off 274,603 through 383,759 +turn off 155,665 through 284,787 +toggle 551,871 through 860,962 +turn off 30,826 through 598,892 +toggle 76,552 through 977,888 +turn on 938,180 through 994,997 +toggle 62,381 through 993,656 +toggle 625,861 through 921,941 +turn on 685,311 through 872,521 +turn on 124,934 through 530,962 +turn on 606,379 through 961,867 +turn off 792,735 through 946,783 +turn on 417,480 through 860,598 +toggle 178,91 through 481,887 +turn off 23,935 through 833,962 +toggle 317,14 through 793,425 +turn on 986,89 through 999,613 +turn off 359,201 through 560,554 +turn off 729,494 through 942,626 +turn on 204,143 through 876,610 +toggle 474,97 through 636,542 +turn off 902,924 through 976,973 +turn off 389,442 through 824,638 +turn off 622,863 through 798,863 +turn on 840,622 through 978,920 +toggle 567,374 through 925,439 +turn off 643,319 through 935,662 +toggle 185,42 through 294,810 +turn on 47,124 through 598,880 +toggle 828,303 through 979,770 +turn off 174,272 through 280,311 +turn off 540,50 through 880,212 +turn on 141,994 through 221,998 +turn on 476,695 through 483,901 +turn on 960,216 through 972,502 +toggle 752,335 through 957,733 +turn off 419,713 through 537,998 +toggle 772,846 through 994,888 +turn on 881,159 through 902,312 +turn off 537,651 through 641,816 +toggle 561,947 through 638,965 +turn on 368,458 through 437,612 +turn on 290,149 through 705,919 +turn on 711,918 through 974,945 +toggle 916,242 through 926,786 +toggle 522,272 through 773,314 +turn on 432,897 through 440,954 +turn off 132,169 through 775,380 +toggle 52,205 through 693,747 +toggle 926,309 through 976,669 +turn off 838,342 through 938,444 +turn on 144,431 through 260,951 +toggle 780,318 through 975,495 +turn off 185,412 through 796,541 +turn on 879,548 through 892,860 +turn on 294,132 through 460,338 +turn on 823,500 through 899,529 +turn off 225,603 through 483,920 +toggle 717,493 through 930,875 +toggle 534,948 through 599,968 +turn on 522,730 through 968,950 +turn off 102,229 through 674,529 diff --git a/2015/day6.py b/2015/day6.py new file mode 100644 index 0000000..3e1a4a7 --- /dev/null +++ b/2015/day6.py @@ -0,0 +1,33 @@ +with open('day6-input', 'r') as file: + data = [l.strip('\n') for l in file] +import numpy as np +lights = np.zeros((1000,1000), dtype=np.int8) + +for line in data: + tokens = line.split(' ') + x1, y1 = [int(i) for i in tokens[-3].split(',')] + x2, y2 = [int(i)+1 for i in tokens[-1].split(',')] # inclusive + if tokens[0] == 'toggle': + lights[x1:x2, y1:y2] ^= 1 + else: # elif tokens[0] == 'turn': + if tokens[1] == 'on': + lights[x1:x2, y1:y2] = 1 + else: # Off + lights[x1:x2, y1:y2] = 0 +print(np.sum(lights)) # Part 1 + +lights2 = np.zeros((1000,1000), dtype=np.int32) + +for line in data: + tokens = line.split(' ') + x1, y1 = [int(i) for i in tokens[-3].split(',')] + x2, y2 = [int(i)+1 for i in tokens[-1].split(',')] # inclusive + if tokens[0] == 'toggle': + lights2[x1:x2, y1:y2] += 2 + else: # elif tokens[0] == 'turn': + if tokens[1] == 'on': + lights2[x1:x2, y1:y2] += 1 + else: # Off + lights2[x1:x2, y1:y2] -= 1 + np.clip(lights2[x1:x2, y1:y2], 0, None, out=lights2[x1:x2, y1:y2]) +print(np.sum(lights2)) # Part 2 diff --git a/2015/day7-input b/2015/day7-input new file mode 100644 index 0000000..0fd2859 --- /dev/null +++ b/2015/day7-input @@ -0,0 +1,339 @@ +lf AND lq -> ls +iu RSHIFT 1 -> jn +bo OR bu -> bv +gj RSHIFT 1 -> hc +et RSHIFT 2 -> eu +bv AND bx -> by +is OR it -> iu +b OR n -> o +gf OR ge -> gg +NOT kt -> ku +ea AND eb -> ed +kl OR kr -> ks +hi AND hk -> hl +au AND av -> ax +lf RSHIFT 2 -> lg +dd RSHIFT 3 -> df +eu AND fa -> fc +df AND dg -> di +ip LSHIFT 15 -> it +NOT el -> em +et OR fe -> ff +fj LSHIFT 15 -> fn +t OR s -> u +ly OR lz -> ma +ko AND kq -> kr +NOT fx -> fy +et RSHIFT 1 -> fm +eu OR fa -> fb +dd RSHIFT 2 -> de +NOT go -> gp +kb AND kd -> ke +hg OR hh -> hi +jm LSHIFT 1 -> kg +NOT cn -> co +jp RSHIFT 2 -> jq +jp RSHIFT 5 -> js +1 AND io -> ip +eo LSHIFT 15 -> es +1 AND jj -> jk +g AND i -> j +ci RSHIFT 3 -> ck +gn AND gp -> gq +fs AND fu -> fv +lj AND ll -> lm +jk LSHIFT 15 -> jo +iu RSHIFT 3 -> iw +NOT ii -> ij +1 AND cc -> cd +bn RSHIFT 3 -> bp +NOT gw -> gx +NOT ft -> fu +jn OR jo -> jp +iv OR jb -> jc +hv OR hu -> hw +19138 -> b +gj RSHIFT 5 -> gm +hq AND hs -> ht +dy RSHIFT 1 -> er +ao OR an -> ap +ld OR le -> lf +bk LSHIFT 1 -> ce +bz AND cb -> cc +bi LSHIFT 15 -> bm +il AND in -> io +af AND ah -> ai +as RSHIFT 1 -> bl +lf RSHIFT 3 -> lh +er OR es -> et +NOT ax -> ay +ci RSHIFT 1 -> db +et AND fe -> fg +lg OR lm -> ln +k AND m -> n +hz RSHIFT 2 -> ia +kh LSHIFT 1 -> lb +NOT ey -> ez +NOT di -> dj +dz OR ef -> eg +lx -> a +NOT iz -> ja +gz LSHIFT 15 -> hd +ce OR cd -> cf +fq AND fr -> ft +at AND az -> bb +ha OR gz -> hb +fp AND fv -> fx +NOT gb -> gc +ia AND ig -> ii +gl OR gm -> gn +0 -> c +NOT ca -> cb +bn RSHIFT 1 -> cg +c LSHIFT 1 -> t +iw OR ix -> iy +kg OR kf -> kh +dy OR ej -> ek +km AND kn -> kp +NOT fc -> fd +hz RSHIFT 3 -> ib +NOT dq -> dr +NOT fg -> fh +dy RSHIFT 2 -> dz +kk RSHIFT 2 -> kl +1 AND fi -> fj +NOT hr -> hs +jp RSHIFT 1 -> ki +bl OR bm -> bn +1 AND gy -> gz +gr AND gt -> gu +db OR dc -> dd +de OR dk -> dl +as RSHIFT 5 -> av +lf RSHIFT 5 -> li +hm AND ho -> hp +cg OR ch -> ci +gj AND gu -> gw +ge LSHIFT 15 -> gi +e OR f -> g +fp OR fv -> fw +fb AND fd -> fe +cd LSHIFT 15 -> ch +b RSHIFT 1 -> v +at OR az -> ba +bn RSHIFT 2 -> bo +lh AND li -> lk +dl AND dn -> do +eg AND ei -> ej +ex AND ez -> fa +NOT kp -> kq +NOT lk -> ll +x AND ai -> ak +jp OR ka -> kb +NOT jd -> je +iy AND ja -> jb +jp RSHIFT 3 -> jr +fo OR fz -> ga +df OR dg -> dh +gj RSHIFT 2 -> gk +gj OR gu -> gv +NOT jh -> ji +ap LSHIFT 1 -> bj +NOT ls -> lt +ir LSHIFT 1 -> jl +bn AND by -> ca +lv LSHIFT 15 -> lz +ba AND bc -> bd +cy LSHIFT 15 -> dc +ln AND lp -> lq +x RSHIFT 1 -> aq +gk OR gq -> gr +NOT kx -> ky +jg AND ji -> jj +bn OR by -> bz +fl LSHIFT 1 -> gf +bp OR bq -> br +he OR hp -> hq +et RSHIFT 5 -> ew +iu RSHIFT 2 -> iv +gl AND gm -> go +x OR ai -> aj +hc OR hd -> he +lg AND lm -> lo +lh OR li -> lj +da LSHIFT 1 -> du +fo RSHIFT 2 -> fp +gk AND gq -> gs +bj OR bi -> bk +lf OR lq -> lr +cj AND cp -> cr +hu LSHIFT 15 -> hy +1 AND bh -> bi +fo RSHIFT 3 -> fq +NOT lo -> lp +hw LSHIFT 1 -> iq +dd RSHIFT 1 -> dw +dt LSHIFT 15 -> dx +dy AND ej -> el +an LSHIFT 15 -> ar +aq OR ar -> as +1 AND r -> s +fw AND fy -> fz +NOT im -> in +et RSHIFT 3 -> ev +1 AND ds -> dt +ec AND ee -> ef +NOT ak -> al +jl OR jk -> jm +1 AND en -> eo +lb OR la -> lc +iu AND jf -> jh +iu RSHIFT 5 -> ix +bo AND bu -> bw +cz OR cy -> da +iv AND jb -> jd +iw AND ix -> iz +lf RSHIFT 1 -> ly +iu OR jf -> jg +NOT dm -> dn +lw OR lv -> lx +gg LSHIFT 1 -> ha +lr AND lt -> lu +fm OR fn -> fo +he RSHIFT 3 -> hg +aj AND al -> am +1 AND kz -> la +dy RSHIFT 5 -> eb +jc AND je -> jf +cm AND co -> cp +gv AND gx -> gy +ev OR ew -> ex +jp AND ka -> kc +fk OR fj -> fl +dy RSHIFT 3 -> ea +NOT bs -> bt +NOT ag -> ah +dz AND ef -> eh +cf LSHIFT 1 -> cz +NOT cv -> cw +1 AND cx -> cy +de AND dk -> dm +ck AND cl -> cn +x RSHIFT 5 -> aa +dv LSHIFT 1 -> ep +he RSHIFT 2 -> hf +NOT bw -> bx +ck OR cl -> cm +bp AND bq -> bs +as OR bd -> be +he AND hp -> hr +ev AND ew -> ey +1 AND lu -> lv +kk RSHIFT 3 -> km +b AND n -> p +NOT kc -> kd +lc LSHIFT 1 -> lw +km OR kn -> ko +id AND if -> ig +ih AND ij -> ik +jr AND js -> ju +ci RSHIFT 5 -> cl +hz RSHIFT 1 -> is +1 AND ke -> kf +NOT gs -> gt +aw AND ay -> az +x RSHIFT 2 -> y +ab AND ad -> ae +ff AND fh -> fi +ci AND ct -> cv +eq LSHIFT 1 -> fk +gj RSHIFT 3 -> gl +u LSHIFT 1 -> ao +NOT bb -> bc +NOT hj -> hk +kw AND ky -> kz +as AND bd -> bf +dw OR dx -> dy +br AND bt -> bu +kk AND kv -> kx +ep OR eo -> eq +he RSHIFT 1 -> hx +ki OR kj -> kk +NOT ju -> jv +ek AND em -> en +kk RSHIFT 5 -> kn +NOT eh -> ei +hx OR hy -> hz +ea OR eb -> ec +s LSHIFT 15 -> w +fo RSHIFT 1 -> gh +kk OR kv -> kw +bn RSHIFT 5 -> bq +NOT ed -> ee +1 AND ht -> hu +cu AND cw -> cx +b RSHIFT 5 -> f +kl AND kr -> kt +iq OR ip -> ir +ci RSHIFT 2 -> cj +cj OR cp -> cq +o AND q -> r +dd RSHIFT 5 -> dg +b RSHIFT 2 -> d +ks AND ku -> kv +b RSHIFT 3 -> e +d OR j -> k +NOT p -> q +NOT cr -> cs +du OR dt -> dv +kf LSHIFT 15 -> kj +NOT ac -> ad +fo RSHIFT 5 -> fr +hz OR ik -> il +jx AND jz -> ka +gh OR gi -> gj +kk RSHIFT 1 -> ld +hz RSHIFT 5 -> ic +as RSHIFT 2 -> at +NOT jy -> jz +1 AND am -> an +ci OR ct -> cu +hg AND hh -> hj +jq OR jw -> jx +v OR w -> x +la LSHIFT 15 -> le +dh AND dj -> dk +dp AND dr -> ds +jq AND jw -> jy +au OR av -> aw +NOT bf -> bg +z OR aa -> ab +ga AND gc -> gd +hz AND ik -> im +jt AND jv -> jw +z AND aa -> ac +jr OR js -> jt +hb LSHIFT 1 -> hv +hf OR hl -> hm +ib OR ic -> id +fq OR fr -> fs +cq AND cs -> ct +ia OR ig -> ih +dd OR do -> dp +d AND j -> l +ib AND ic -> ie +as RSHIFT 3 -> au +be AND bg -> bh +dd AND do -> dq +NOT l -> m +1 AND gd -> ge +y AND ae -> ag +fo AND fz -> gb +NOT ie -> if +e AND f -> h +x RSHIFT 3 -> z +y OR ae -> af +hf AND hl -> hn +NOT h -> i +NOT hn -> ho +he RSHIFT 5 -> hh diff --git a/2015/day7.py b/2015/day7.py new file mode 100644 index 0000000..2634507 --- /dev/null +++ b/2015/day7.py @@ -0,0 +1,53 @@ +with open('day7-input', 'r') as file: + data = [l.strip('\n') for l in file] + +bin_ops = {'AND': int.__and__, 'OR': int.__or__, 'RSHIFT': int.__rshift__, 'LSHIFT': int.__lshift__} + +class dict_int_giver(dict): + def __init__(self, kvs=[], readonly=None): + super().__init__(kvs) + self.readonly = set() + if readonly: + self.readonly = set(readonly) + def __getitem__(self, key): + try: + return int(key.replace(',', '')) + except ValueError: + return dict.get(self, key, None) + def __setitem__(self, key, value): + if key in self.readonly: + return + dict.__setitem__(self, key, value) + +def run_circuit(identifiers): + queue = [line for line in data] + while queue: + line = queue.pop(0) + tokens = line.split(' ') + output = tokens[-1] + input = tokens[:-2] + if len(input) == 1: # Can only be a -> b + i = identifiers[input[0]] + if i is not None: + identifiers[output] = i + else: + queue.append(line) + elif len(input) == 2: # Can only be NOT a -> b. a must be identifier. + if input[1] in identifiers: + identifiers[output] = identifiers[input[1]] ^ 0xFFFF # 16bit values + else: + queue.append(line) + elif len(input) == 3: # Can be any of the binary operators + i = identifiers[input[0]] + j = identifiers[input[2]] + if i is not None and j is not None: + identifiers[output] = bin_ops[input[1]](i, j) & 0xFFFF + else: + queue.append(line) + +identifiers_1 = dict_int_giver() +run_circuit(identifiers_1) +print(identifiers_1['a']) # Part 1 +identifiers_2 = dict_int_giver([ ['b', identifiers_1['a'] ] ], ['b']) +run_circuit(identifiers_2) +print(identifiers_2['a']) # Part 2 diff --git a/2015/day8-input b/2015/day8-input new file mode 100644 index 0000000..3e5be65 --- /dev/null +++ b/2015/day8-input @@ -0,0 +1,300 @@ +"\xa8br\x8bjr\"" +"nq" +"zjrfcpbktjmrzgsz\xcaqsc\x03n\"huqab" +"daz\\zyyxddpwk" +"draes\xa2n\\g\x27ek\"lj\"\\viqych" +"nnx\\krnrfomdnt\x2flbl\xd2xpo\"cp\"k" +"kwdaapalq" +"u\"ptk" +"ckhorczuiudfjmmcc\\u\"wozqxibsfjma" +"ydctdrxat\"pd\"lwi\"bjesevfw\xe8" +"v\"\xa8rrzep\"\"r" +"nbydghkfvmq\\\xe0\"lfsrsvlsj\"i\x61liif" +"jsas\"u" +"odipikxlo" +"\"rnubsgwltqkbsu\"pcpcs" +"eitk\\f\\mhcqqoym\\ji" +"vnedc" +"\"lhcaurdqzyjyu" +"haxzsa\"zcn\"y\"foclgtjfcnv\"m\x68krc" +"\"eoeggg\"tmiydvcay\"vfavc" +"snqvyqoncwxcvwbdktoywch" +"rnfgjsyr\xd5wacy" +"ik\"hebrpvsts" +"txw" +"\x15pxtdkogd\"urbm\"gevhh\"nxr\x3erxtk" +"cetqtcy" +"inleep\\mgl" +"uflwbxvww\x2cxzezqnaply\"yh\"qlllzk" +"eepak\"xqtedzt" +"na\x61qzfieafvyrsnwkssznohjmc" +"yceaonylz\xc1\\jrlbbkzwsidfi" +"ybqafngkcqpbp" +"\xaft" +"yidjpaobqydso" +"ju\\ldxig\\lrdrhjcmm\x77rc" +"tylacqeslnwj\x48ds\"tjxa" +"efbfm" +"\\fxkgoprgdcjgyajykg\\dtbrz" +"eujvva" +"h\x7acwfpikme\\vwthyvrqdnx\"" +"rbpbrxm\\\"\"\"voxx" +"ykiw\"tkb\\lforu\"rsf\\tf\"x\"rqti" +"e\\wh\x77aqeugiq\\ihhfqfuaij" +"g\"t\\o" +"nxzo\"hf\\xp" +"dxiaqfo\xea" +"kali\\zczhiqkqzybjj\"fgdjnik" +"zdkgrqmdv" +"bimxim\xb6lrwsaj\"ui\"a" +"\"rrznitibgx\\olpsjmjqzctxaubdifsq" +"zb\"khzixaacmhuzmlymoformipdzml" +"qfwi" +"hjwsxfpphttjy\"\"zixais\xbblgnqfto" +"puj\\qmyu\"nqgaqfthbwjokbmrpbhpi" +"cyxdpkh\\\"" +"q" +"m" +"tbxdzzllarlo" +"gbtys" +"gytilk\\vlqxvcuutjunrqc" +"uugkvcuzan\\eyhb" +"yaxr\"genlbgw\"\\uc" +"nrgecjeip\\sjdvgqaqxwsqactopu" +"pu\"r\"txpyrkfny\\zmwfneyvwmnkkdipv" +"jm\xa3bhwvq" +"qxojmnml\"w\x9airr" +"xbzsuihs\x4dcedy\xaclrhgii\\\"" +"drgjirusrekrwmvxllwdm" +"\x28hfxnfpycmpnkku\"csuf\xaarxlqyg\"x" +"\"zvz\\rmg\"\\sxxoifffyqfyn\"iq\"ps" +"\"z" +"zbwkmk\"sgzos\x93gtc\"" +"bvm\x28aa\\\\\"pywuhaniox\\z\\hbp\xd7mold" +"aszgvsyna" +"qf\"vdwuss" +"lnohni\"qwiacjsjegstlbfq\\kyjhyd" +"c\\naawulxlqplnacvytspry\xf5ytxxqq" +"razwqmsqgbaaxcd\\f" +"radggyrjrg\"zx" +"\"pu\x11t\\ajcjuieinlkvya" +"veggiskh" +"eglfhjxiet\"kouqfskwsy\"hpthsldel" +"mv\xc1b\"f\\shrssnjwcpmurepdxdlcj" +"dlayjd\"suvzotgdtc" +"\xa9pvxeopn" +"lpplsaxy\"oiwaq" +"hqwh\\lusv" +"hykykwlx\"\xa5atkgh\\d\x63dff" +"vfktanpjy\"xxetc" +"dnhwkgjnsmsswfuelvihvjl\"jtf" +"x\"dwvzra\"nbbsewftehczgbvfzd\"rau" +"csfi\"mzejnjqkqupwadrgti\"von" +"xckf\xf7xsm\\pgvlpetjndpyblais\\z" +"yecy\x6fuj\x58bwpgeuiw\"mdu" +"fgb" +"c\\lx\x3efthet\xfdelgvwvpem" +"kgyrmarvfwjinlowt" +"yzte" +"vc\"z" +"sxevqfzmmdwsuu\"" +"fxbaercmcy\xb6md" +"f" +"m\x44gqbcppho\\b" +"gtafr\x57m\x11jy\"\"erwmmpiwjkbckuw" +"ufdjt\"kssprzxqixzxmq\x58q" +"yzbyo\"lfdbyaxexyfbnyv\\\xe8xmre" +"u\x43ntr\\\\byyfjr\"iveujvnwsqbnpuvrta" +"us\xf6bai" +"c\\edh" +"tzckolphexfq\\\x23\xfbdqv\\\"m" +"yjafhbvhhj\x1b\"bplb" +"\"o" +"rubahvmp\"" +"qmkukrnrmqumh" +"wdpxyvyidhwjf\\nabbijwhr\xc5bksvy\"p" +"u\"prlpg\"" +"nsvcquyxbwilsxxemf\xd9leq" +"y\xcetxuafl" +"it" +"kwdlysf\\xjpelae" +"viwh\x58wpjjlnvryuti\x2chngrx\\nhtkui" +"vhn\x9ehre\xc3ncsqbozms\"nl" +"ytc\xa3mgeeogjcqavmmmd" +"xzlexlitseozoxtpzzutfq" +"cish\x07lmovj" +"ekbflwqzaiivdr\"pq\\azrfbntqwkn" +"uc\"xdbegmlmhksofzohavtrnxf" +"xfdnrdqdrcjzbe" +"ndg\"ckgrpisib\"rg\"p\\lmpfzlssnvk" +"witfjwpbyyzlop" +"zonlww\"emrbcsgdtrg\"rjzy\x64zqntlw" +"dvgb\"zn\\vrbzema\"ckmd" +"\\vdlmxhlvldk\"pmzazeip" +"\"\"r" +"rsntinv" +"iy" +"lr\x20efh" +"csgexlb\"zqdavlxxhtdbh\"\"\x0fkpvhiphm" +"ouwhp\"ogbft" +"cm\\ckltng\"dw\x8brf\xf0eppgckd" +"zmnlsgalhpkejsizfsbtnfliu\"nhc" +"pnrkaayqvwpdjbhcrbb\"yfeq\"aq" +"ozh\\hoxow\x2csrtr\\r\"" +"bqxabj\"u\\s" +"cpsjti\"gy" +"aa\"p\\nki\\ajijkqev" +"q\"\"lfdentjgd\\" +"bmokvpoebutfki" +"pielvcbne\xf6efvzxn" +"kx" +"zlgmqagcrbhrwtwtmmg" +"aiyhmntcqjbpv\xb5hhswxbryoedvos" +"tdpaxrb" +"fu\"\x7dttkyvhrlwko" +"oirc\\\"cqlnqffjqt\\k" +"edxlia\\tcyby" +"jpeybgwfayerfrfbvfog\"ol" +"ysr" +"bzwzilgwfugjk" +"tlcc\x75nukvwjgftetjcs\xaecwc" +"dsqssa\"vzrf\"sewbp\\ahhlmhbeihlh" +"qtgmjck\"n\"guki\"gmdivwqxismqj" +"\"f" +"wuorvlovucngbzdszqpikyk" +"dfrdsacoukmgvhbq\"\"iwto" +"\"ey\"ch\\wcgioe\\\"ouvligmsw" +"ciqlszzgs" +"\\tzyrkaoi\"sopjaq" +"lmtnv" +"ar\"fqoroigiertjjlm\"ymgi\\kkjewsxd" +"wehcimlvudpxtamdn\"rwy" +"hr\"zvrwthr\"vruzqfrldn\"b" +"sggekodkiwvym\"mhsco" +"ltlkfbrrdvk\\" +"uut\"sfjnz\"\\ef" +"hxilg\\" +"zsredsiwlzrpedibn" +"vtfi" +"\\h" +"qekfrc\xf6wduodbwrguqcng\\n" +"\"lljlfdrxftwidn\\pkv\xd9ij" +"mrvgqynpehkliuijlpp" +"gikjph" +"yoxcdrdt\"wbaurnyhoyxoihu" +"onmomwuxuammbzxe" +"rnrr\\twviz\x61gqaljr\x0dmtw" +"r\"vupaoi" +"l" +"sei" +"jwxtdtbkd\\kxd" +"\x22v\\" +"ahd" +"j\"bjqxs" +"\\i\x24gglxub\\nzsajokt" +"lviwpu\"uxdlh\\zuy\"xqy\"ytdzlx\"r" +"kptfmys" +"fwxzikfhczkjwyjszqdbkepaeellc" +"nlqpsvbrbd\\ns" +"qryuwkjiodw\"\"vaqyq\"dmyifm" +"tw\x15kdmaudjl\\zorhp\"alwh" +"aatrvczesykekkjfyb\"kb" +"usqcutbqbxxhucwxo\xc1ltb\"j\"bghjcvws" +"ilhsrnzxkz" +"bianqfdfdhvw" +"hqibqs\x7ax\"qoxqoaqtcsz" +"htxtoojbbauztwxuiq\\ngyfy\\obzc" +"rxn\\moxlj" +"mtus\x84erh\"dbe" +"asx\x50huvsitcxadt" +"\"bugggtnrc\"\"kl\"hmpu\x83hqrvhpo" +"ewisbp\"\"vuzf\\w\x5fvalszdhl" +"scusplpwxfnxu\x57\"zynpn\x99xerc\\ri" +"m\\kinmkke\x0cl" +"xhuzit\x7fd" +"kfbo\x04\x50ruqirn" +"t\"\"xpbdscmdoug" +"punvpsgnbgyxe\"sptmpz" +"bxukkazijr" +"nxyrcdaoo\"rjkk\"wntehcvcip\"vrd" +"rdpvqskmihqaw" +"p\\gwdhtqnpgthod" +"nwnuf\"\"yebycearom\"nqym\"\xd4sii\xccle" +"alda\"ptspo\"wkkv\"zoi\"hkb\"vnntyd" +"ixpgpfzbqv" +"znui\"\\fzn\x03qozabh\"rva\"pv\x67" +"e\"zswmwuk" +"hcccygwfa" +"ngmace\\rtyllolr\"\x68bw" +"\\c\"jyufbry\"ryo\"xpo\x26ecninfeckh\\s" +"hdnpngtuc\"dzbvvosn\x31fwtpzbrt" +"hesbpd\xd4" +"dsdbstuzrdfmrnyntufs\"dmv" +"d\xeeibcwhcvkt" +"fvzwrsfjdqdmy\"\"v" +"ns\"dqafz\\lkyoflnazv\"mn\x37\"o\"yj\"e" +"dypilgbwzccayxa\"bnmuernx" +"q\xa9ztqrhreb\"\"kxfeyodqb" +"iz\xa5qjxqulaawuwz\"rqmpcj\\yel" +"z\"\\pq\"\"y\x67zpjtn" +"ifxqvivp\"kiiftdoe" +"jxzebj\"\x35\"qr\"ecglcutuoyywqumcs\"kk" +"q" +"yob\x85qmpuwexptczbkrl" +"cjiavv\"uudpozvibyycnmxhxpxmpjoz" +"xro\\uiqyrcid" +"nod\\k" +"d\"neiec" +"tqyrqvwyvmz\\pzgzzcqsqsrgbqbtapoz" +"r\"xvocpeuxfxslgueb\x05kzyyie\"aoec" +"\"du\\uirlhcbgv\\cjqhfreqnvn" +"zp\x04\x15\"pbjwhrjtmiba" +"\\cv\"" +"k\"rwnb\\hiu\"rqd\"rc\\nyakrhly" +"klrmafjzandiddodgz" +"xipzhqzhvlpykzcuppx" +"zdvrvn\xd0mtfvpylbn\\\\sxcznrzugwznl" +"ody\\pvm\"kpjiudzhxazirgxzvumeat\"o" +"kllvhdp\"prjikzrrc\"adgpegc\\\"gk" +"sqtpug\xbcaauxaamw" +"wegxxrrxdvpivrqievfeokmnojsk" +"\\bo" +"gijhz" +"ylowluvabwrigssdgtxdwsiorxev\xdd" +"\"" +"ghnsrnsqtxpygikahkrl" +"\"rcfqkbjf\"sgxg\"vnd\\rotn" +"ap\"smgsuexjrbuqs\"mpbstogj\"x" +"koaunz\\sgt\"opv" +"yialiuzwix" +"yp\"ndxgwzml\"bt" +"lpcjxmggfsy\\szbxccarjkqzasqkb\xcfd\x0c" +"x" +"mgakc" +"vjieunoh\x73fjwx" +"erbvv\"qulsd" +"mimycrbfhqkarmz" +"tihfbgcszuej\"c\xfbvoqskkhbgpaddioo" +"mziavkwrmekriqghw" +"izk\\tnjd\\ed\\emokvjoc" +"c\"nhbqzndro\\g" +"usfngdo" +"aypljdftvptt" +"ym\"afvq\xbcc" +"zabi\"wjpvugwhl" +"ebvptcjqjhc\"n\"p\"dxrphegr\\" +"mzlqqxokhye\xd9\\rffhnzs" +"hnipqknwpsjakanuewe" +"rqgbfcjdrmiz\"h" +"kzzp\\z\\txmkwaouxictybwx" +"yzmspjkqrteiydswlvb" +"gjpxklgpzv\"txri\\hotpuiukzzzd" +"p\"rxergtbsxmjmkeeqwvoagnki\"" +"santipvuiq" +"\"ihjqlhtwbuy\"hdkiv\"mtiqacnf\\" +"oliaggtqyyx" +"fwwnpmbb" +"yrtdrieazfxyyneo" +"nywbv\\" +"twc\\ehfqxhgomgrgwpxyzmnkioj" +"qludrkkvljljd\\xvdeum\x4e" diff --git a/2015/day8.py b/2015/day8.py new file mode 100644 index 0000000..13f6c6d --- /dev/null +++ b/2015/day8.py @@ -0,0 +1,13 @@ +with open('day8-input', 'r') as file: + data = [l.strip('\n') for l in file] + +count = 0 +for line in data: + count += len(line) - len(line.encode('utf-8').decode('unicode-escape')) + 2 # Overall quotes aren't removed by encoding +print(count) # Part 1 + +import json +count2 = 0 +for line in data: + count2 += len(json.dumps(line)) - len(line) +print(count2) # Part 2 diff --git a/2015/day9-input b/2015/day9-input new file mode 100644 index 0000000..9850564 --- /dev/null +++ b/2015/day9-input @@ -0,0 +1,28 @@ +Faerun to Norrath = 129 +Faerun to Tristram = 58 +Faerun to AlphaCentauri = 13 +Faerun to Arbre = 24 +Faerun to Snowdin = 60 +Faerun to Tambi = 71 +Faerun to Straylight = 67 +Norrath to Tristram = 142 +Norrath to AlphaCentauri = 15 +Norrath to Arbre = 135 +Norrath to Snowdin = 75 +Norrath to Tambi = 82 +Norrath to Straylight = 54 +Tristram to AlphaCentauri = 118 +Tristram to Arbre = 122 +Tristram to Snowdin = 103 +Tristram to Tambi = 49 +Tristram to Straylight = 97 +AlphaCentauri to Arbre = 116 +AlphaCentauri to Snowdin = 12 +AlphaCentauri to Tambi = 18 +AlphaCentauri to Straylight = 91 +Arbre to Snowdin = 129 +Arbre to Tambi = 53 +Arbre to Straylight = 40 +Snowdin to Tambi = 15 +Snowdin to Straylight = 99 +Tambi to Straylight = 70 diff --git a/2015/day9.py b/2015/day9.py new file mode 100644 index 0000000..6575e63 --- /dev/null +++ b/2015/day9.py @@ -0,0 +1,28 @@ +with open('day9-input', 'r') as file: + data = [l.strip('\n') for l in file] + +towns = set() +distances = {} +def get_distance(town1, town2): + if town2 < town1: + return distances[(town2, town1)] + else: + return distances[(town1, town2)] +def set_distance(town1, town2, value): + if town2 < town1: + distances[(town2, town1)] = value + else: + distances[(town1, town2)] = value + +for line in data: + town1, _, town2, _, distance = line.split(' ') + towns.add(town1) + towns.add(town2) + set_distance(town1, town2, int(distance)) + +from itertools import permutations +route_distances = [] +for route in permutations(towns): + route_distances.append(sum([get_distance(a, b) for a, b in zip(route[:-1], route[1:])])) +print(min(route_distances)) # Part 1 +print(max(route_distances)) # Part 2 diff --git a/2018/day1-input b/2018/day1-input new file mode 100644 index 0000000..de8f921 --- /dev/null +++ b/2018/day1-input @@ -0,0 +1,1004 @@ ++1 ++6 ++6 ++2 ++1 +-17 +-16 ++10 ++9 ++7 +-13 ++10 ++14 ++13 +-8 ++12 +-18 ++11 +-8 +-19 +-6 +-15 +-6 +-1 ++13 +-21 ++14 ++13 +-3 +-14 +-21 +-18 ++17 ++3 ++14 ++6 +-18 +-11 ++8 +-18 +-14 +-14 ++12 +-2 ++3 +-11 +-7 ++4 +-5 +-11 ++2 ++1 ++19 +-14 +-1 +-2 +-14 ++2 ++4 ++9 +-14 +-12 +-7 ++14 ++7 +-12 +-17 +-12 ++5 ++4 +-2 +-10 ++7 ++18 ++1 ++10 ++12 ++17 +-19 +-17 +-8 +-4 +-4 +-8 +-19 ++13 +-8 ++1 ++17 ++10 ++12 ++3 ++11 ++6 ++13 +-15 +-9 ++20 ++3 ++10 +-19 +-27 ++12 +-11 +-27 +-14 ++15 ++14 ++4 ++18 +-20 +-14 +-16 ++18 ++5 +-17 +-1 +-20 ++12 +-16 +-19 +-14 ++8 +-10 +-14 ++12 +-8 +-5 ++3 ++19 +-12 +-1 ++17 +-5 +-1 ++16 ++22 +-18 ++3 +-11 +-8 ++5 ++15 ++5 +-15 +-16 +-14 +-6 +-5 ++9 ++12 ++14 ++10 ++21 +-2 ++14 +-23 ++5 +-7 +-19 ++12 ++8 +-10 +-14 +-24 +-12 +-6 ++2 +-16 ++4 +-10 +-9 ++5 +-10 +-15 +-2 +-15 ++14 +-5 ++1 +-17 ++4 ++7 +-3 ++18 ++17 +-12 ++3 ++4 +-15 +-4 +-9 +-18 +-9 +-14 ++5 +-12 ++10 +-13 +-8 +-7 +-4 +-4 ++19 ++20 ++14 +-18 ++10 ++14 +-15 +-19 +-3 ++6 +-12 +-9 +-13 +-8 +-5 ++12 +-5 +-14 +-16 +-13 ++6 ++19 ++14 +-5 +-16 +-14 ++17 ++17 ++6 ++14 +-18 ++11 ++15 +-19 ++7 +-9 ++16 ++4 +-9 +-3 ++19 ++4 +-12 +-18 +-14 ++18 ++10 ++13 +-16 +-20 +-6 +-3 ++14 +-25 ++10 +-12 +-14 ++1 ++3 ++9 +-6 +-13 +-1 +-18 ++17 +-18 ++4 ++10 ++10 ++13 ++14 +-19 +-15 +-20 +-10 ++1 +-15 ++8 +-11 +-15 ++8 ++14 ++18 ++3 ++10 +-6 +-17 +-14 +-19 +-14 +-4 +-5 ++16 ++13 ++16 +-8 +-5 ++18 +-7 +-18 +-13 +-2 ++1 ++20 +-16 +-1 ++16 +-3 +-10 +-10 +-8 ++20 +-6 ++9 +-19 +-8 +-4 +-10 ++5 +-19 ++17 ++12 +-7 +-18 ++21 ++10 ++6 ++28 ++13 ++18 ++15 +-12 +-10 +-14 +-11 +-11 +-4 ++8 ++26 ++8 +-1 +-14 +-14 ++18 ++14 +-1 ++16 ++13 +-19 ++18 +-5 +-11 ++8 ++2 ++19 ++1 ++13 +-3 +-1 +-16 +-5 +-17 +-22 +-17 +-20 +-20 ++3 ++20 +-17 +-19 +-7 ++10 +-19 +-4 ++10 +-13 +-10 +-16 ++6 +-19 ++3 +-8 ++1 ++6 ++6 +-10 ++1 +-12 +-17 +-5 ++3 +-5 ++1 ++13 +-1 ++4 +-1 +-12 ++2 +-13 +-19 ++9 ++2 ++5 ++7 ++15 ++9 +-10 +-8 ++5 +-19 +-3 ++12 ++20 ++24 ++13 +-14 +-18 ++2 ++9 +-15 ++3 +-7 +-16 +-49 +-21 +-18 +-1 +-13 +-8 ++9 ++1 +-5 +-19 +-8 ++23 +-4 ++9 ++18 +-28 +-16 +-19 +-9 +-16 ++20 +-22 +-13 ++9 +-8 ++7 ++10 +-21 +-4 +-14 ++17 ++14 ++6 ++4 ++23 +-22 ++11 +-26 +-18 ++2 +-6 +-7 ++12 +-16 +-1 +-8 ++19 ++9 +-12 +-18 +-3 +-7 +-7 ++12 ++12 +-2 ++15 ++12 ++9 ++9 +-13 ++3 ++12 ++16 +-11 +-21 +-24 +-13 +-23 ++6 +-9 ++15 +-4 +-17 ++8 ++4 +-10 +-5 +-1 +-6 ++15 ++13 ++13 ++27 +-19 +-50 +-1 ++13 +-19 +-3 +-9 ++1 +-2 +-10 ++14 +-7 +-13 +-2 ++12 ++22 ++8 ++1 +-3 +-23 +-32 +-36 ++6 ++13 +-24 +-26 +-3 ++5 +-20 +-6 +-17 ++13 +-47 +-32 ++6 +-19 +-17 +-1 +-6 ++12 ++19 +-22 +-16 +-14 +-39 ++116 +-38 +-8 ++36 ++14 ++42 ++90 ++35 ++35 +-11 ++28 +-23 +-1 ++77 ++18 +-26 +-13 +-37 +-91 ++6 ++243 ++8 +-28 ++3 +-15 ++48 ++36 +-11 +-91 ++93 ++83134 ++14 ++10 ++4 ++7 ++15 ++6 +-19 ++4 ++11 ++19 +-18 ++6 ++4 +-8 ++19 +-16 +-7 ++24 ++4 +-2 ++3 ++13 ++4 +-8 +-5 ++22 ++4 +-16 ++18 ++19 +-8 +-14 ++12 ++6 +-1 ++8 ++23 ++19 ++3 ++12 ++3 +-9 +-10 +-8 ++11 ++15 +-13 +-14 +-6 ++11 +-26 ++11 ++14 +-20 +-28 +-22 +-9 +-1 +-3 +-14 +-9 ++1 +-27 +-18 ++12 +-21 ++18 +-12 ++19 ++7 +-24 +-17 +-13 ++4 ++3 +-6 +-2 +-9 ++7 ++13 ++27 +-21 +-4 ++12 +-3 ++11 +-14 ++2 ++13 ++3 ++23 ++22 +-2 +-8 ++21 ++11 +-7 +-7 ++10 ++13 ++4 +-1 ++7 +-16 ++8 +-20 +-14 ++79 +-41 +-8 ++78 ++15 ++37 ++2 ++43 ++4 ++15 +-1 ++10 ++15 ++3 +-2 ++20 +-13 ++11 +-5 ++19 ++10 +-13 ++29 +-13 +-19 +-18 +-5 ++18 +-17 ++15 +-14 ++18 ++16 +-15 ++24 +-2 +-2 +-6 +-24 +-26 +-11 +-9 ++10 +-2 +-10 ++5 ++9 +-18 ++19 ++4 +-15 +-16 +-8 ++18 ++23 +-5 +-3 ++7 ++11 ++1 +-31 +-4 ++33 +-35 ++8 ++26 +-2 ++69 ++15 +-4 +-3 +-10 ++12 ++2 ++4 ++17 ++9 +-14 +-10 +-14 +-9 +-2 ++13 +-7 ++8 ++18 ++14 +-7 ++6 ++16 ++9 ++9 ++1 ++17 +-19 +-1 ++10 +-13 +-19 +-14 ++1 +-9 ++1 +-7 ++1 ++10 ++9 ++13 +-2 ++14 +-19 ++16 +-4 +-9 ++12 ++7 ++1 ++18 ++13 ++17 ++12 ++13 +-14 +-10 ++19 ++19 ++19 +-2 +-11 +-3 ++19 +-17 ++19 +-4 ++15 ++13 ++18 ++15 ++19 +-9 ++5 +-27 +-2 +-18 +-18 ++5 ++21 ++6 +-4 ++23 +-8 ++10 ++13 +-2 ++22 ++6 +-15 +-10 +-8 ++43 +-15 +-13 ++7 +-34 +-33 +-16 +-11 +-4 +-1 +-15 +-14 +-1 +-13 ++5 ++10 +-18 ++12 +-15 ++14 +-10 +-17 +-14 +-14 ++18 ++4 ++3 ++6 ++5 ++1 ++3 +-8 ++11 +-17 ++1 +-3 +-14 +-4 ++7 +-16 ++10 ++12 +-7 +-14 ++17 ++1 ++19 +-6 ++5 ++20 +-12 ++22 +-18 +-16 +-7 +-18 ++4 +-22 ++16 +-7 +-1 +-22 +-9 ++4 +-10 ++23 ++4 +-9 ++26 +-22 +-18 +-19 ++23 +-1 ++12 +-20 ++14 +-21 +-16 +-12 ++2 ++16 ++11 +-41 ++35 +-7 +-3 ++9 ++34 ++26 +-5 ++18 ++31 ++9 ++17 ++4 +-6 ++4 +-8 ++2 +-4 ++18 ++2 ++1 ++16 ++7 ++10 ++12 +-1 ++31 +-47 +-22 +-4 ++11 ++19 +-8 +-19 ++12 ++5 +-24 +-18 ++6 ++15 ++17 +-7 ++4 +-23 +-20 +-8 ++18 ++2 ++10 +-16 +-45 +-196 +-12 +-16 ++15 +-4 +-48 ++2 ++47 ++103 ++122 ++90 ++67 ++36 ++10 ++9 ++11 +-82543 diff --git a/2018/day1.py b/2018/day1.py new file mode 100644 index 0000000..5c58065 --- /dev/null +++ b/2018/day1.py @@ -0,0 +1,13 @@ +with open('day1-input', 'r') as file: + data = file.readlines() +nums = [int(d.rstrip('\n')) for d in data] +print(sum(nums)) # Part 1 answer + +from itertools import cycle +iterator = cycle(nums) +while(True): + f += next(iterator) + if f in freqs: + print(f) # Part 2 answer + break + freqs.add(f) diff --git a/2018/day2-input b/2018/day2-input new file mode 100644 index 0000000..077f200 --- /dev/null +++ b/2018/day2-input @@ -0,0 +1,250 @@ +pnebjqralgdgckzfifvtxywomu +pnebjqsalrdgcqzfihotxhwomu +pneajqsalrdgckzfihytxywoml +pnepjqsalrwgckztihvtxywomu +pnhbjqsalrdgckzfimvtxywodu +pnwbjqsdlrdgckzfihvnxywomu +inebjqnalrdgckzfihvtxzwomu +pnebjssalhdgckzfihvtsywomu +pnebjqjalrdgckzfiavtxywoku +vnebjqsalrdgckzfihvbxmwomu +phebjksaurdgckzfihvtxywomu +pneojqealrdgckzhihvtxywomu +snebjqsalrdgckzqihvtxyzomu +pnebjqsalrtackzfihvtxswomu +bnebjqlalrdgckzfihvtxywhmu +pnebjqfalrdgckzfijvtxywomi +fnehjbsalrdgckzfihvtxywomu +pnebjasalrdgckzdihvtxqwomu +pnebjhsaljdgckzfihvtxywmmu +pnebjqsalrdgckzfihvsxykoau +pnebjqsalrdgckzbihvtdywomc +pnobjqsalrxgckzfihvtxywomh +pnebjqstlrdgchzfihvtxywnmu +pnebjquaxrdgckzfihvtxywolu +pqebjqsalrdgcdzfihvtcywomu +xnabjqsalrdgckzfihvtxywmmu +rnebjqsalrdgckzfihvtxmwouu +vaebjqsalrdgckcfihvtxywomu +pnebjqsalrpgcnzfihvbxywomu +pcvbjqsalrdjckzfihvtxywomu +pneyjqsafrdgckzfihdtxywomu +pxedjqsalrdgckzfihvtxyzomu +pnebjqsalrdgctzfihnyxywomu +pnebjqsalrdgckzfihvtnylsmu +pnebjqsalrdyckzfihvbxycomu +fnebjqsalrdgckzfihvtxtwomc +pnobjqsalrdgckdfihvtxywomh +pqebjqsalrdgcqzfihvtxywymu +pnebxqsalrdgckzficvtwywomu +pnebjqshlragczzfihvtxywomu +pnebqqsalrdackzfihttxywomu +pnebjqsalrdsckwfbhvtxywomu +pnehjqsalrdgcuzfxhvtxywomu +pnebjqsavrdgckzfihvexywomn +pnebunsalrdgckzfihvtxywomi +pnebjxsalrdgckzfmhvtpywomu +rnebjqsalrdghkzfihztxywomu +pnebjqsalrigcbzfihvfxywomu +pnebqqsalrggckzfihvtxyromu +pnebjqsalrdgchzfihvtxylmmu +pnebeqsalrdgckzdihvtxywoms +pnebjqsalrdgckzzihvfxywozu +pnzbjgsalrtgckzfihvtxywomu +pnebjqsaledgckzjihvtxzwomu +pnebjqsalydgckqfihvtxywouu +pnebjqsalrdgckufihvqxdwomu +pnebjqsylrdgckzfihvdxyjomu +pnemjqsalrdgckzeihvtxywoqu +plebjasalrdgckzfihvtxywomb +pnebjqsadrdgckufihvtxyfomu +pbebjqsaardgckzfihvtxmwomu +pnebjqsalrdgcmzfihotxywgmu +pnebjqsaprdgcizfihvtxywhmu +pnebjqsalrkgcuzfihvtlywomu +pnebjqsalrdnckzfihvtxysomg +pnebjqdafrdgckzfihctxywomu +pnebjqsalrdgckzfihutxkwomp +pnebvqsalrdgclzfimvtxywomu +pnebjqralrdgcktfihvtxiwomu +pneujqsalrdsckzfzhvtxywomu +pnebfqgalrdgckzfihvtxywjmu +pneyjqsalrkgckzfihctxywomu +pndbjqsalrdgckzfjhvtxywouu +pneljnsalrdgcozfihvtxywomu +phebjqsalrdgckzfihxtxdwomu +pnlbjqsalrhgckzfzhvtxywomu +pnebjqsalrsgckzfiovtxywwmu +pncbjqsalrdgfkzfivvtxywomu +nnebjqsalrdgckzfthvtxycomu +pnebjqwalsdgckzfixvtxywomu +pnebjtsalrdgcfzfimvtxywomu +pnebjqsvlrdgckzfihutxfwomu +pnebjmsalrdgckzkxhvtxywomu +pnekjqsllrdgckzfinvtxywomu +pneijqsxlrdgckzfihvtxywjmu +wnxbjqsafrdgckzfihvtxywomu +pnebjqskledgokzfihvtxywomu +pnebjqvalrdgckzfihvtxytoju +pneqjqsalrdgckzfilvthywomu +pnebjqsalrdgckzfihvokywomf +bnebjqsalrdgckufihvtxywimu +pnebjqsaurdgckzfihvtrywosu +pnebjmsaludgckzfihvtxywomn +pnebdqsalrdgcktfihvtxywodu +pnebjqjylzdgckzfihvtxywomu +piebjqsalrdgcrzfihstxywomu +pnebjqsaurdgckwfnhvtxywomu +pnebxqsajrdgcjzfihvtxywomu +pnebjqsalrdghsdfihvtxywomu +pnebcqsxlrdgckzfihvtxyaomu +pnefjqsalrdgckzfuhvtxyworu +pnebjqsalrdlcksfihvteywomu +pnebjqlalrgackzfihvtxywomu +pnebdqsalrdickzfihvtxdwomu +pneujksalrdgctzfihvtxywomu +pnebjqsalrduckzfihvsxywomf +pnebjqsalrdgckcfihotxywomd +envbjqsalsdgckzfihvtxywomu +pnebjqsalzdgcvzzihvtxywomu +pnebjqsalrdyckzflhvyxywomu +pnebjqsalrdglkzfihstxymomu +pnebmqsalrdgokzfihvtxywoml +pnebjqsylrdnckzfihatxywomu +pnebjqaflndgckzfihvtxywomu +pneboqsagragckzfihvtxywomu +peebjqstlndgckzfihvtxywomu +onebjqsklrdgckzfihvtxmwomu +pnebjqjnlrdgckrfihvtxywomu +pnebjqsalrhgckzfihvqxywomh +pnebjqsalrdgckzzihvtxowomw +pnebjgsalrdgckffihltxywomu +znebaqsalcdgckzfihvtxywomu +pnnbjqeasrdgckzfihvtxywomu +rnebjqaalrxgckzfihvtxywomu +pnebjqsalrdgckaxphvtxywomu +pnebjcnalrdgnkzfihvtxywomu +pnebjasalbdgckzmihvtxywomu +pnebjqsalrdgckefjhvtmywomu +pnebjqsalrdgmkzfihvtxyoomb +pnebjqsalrkgckogihvtxywomu +pnwbjqsalrdgckztihvtxywomt +pnebjqsalrdgckzfihotgnwomu +pnebjqsdlrrgckzfihvtxyaomu +pnebvasalrdgckzfihvtsywomu +pnebrqqalrvgckzfihvtxywomu +tnebjqsglrdgqkzfihvtxywomu +pnebjqsatrsgckifihvtxywomu +pneboqsalrdgckzfihvkxywomi +pnezaqsalrdgcktfihvtxywomu +pnebjqsnlrdgckzfihvfxqwomu +pneajqsaxrmgckzfihvtxywomu +pnebjosalodgckzfihvxxywomu +pnebjqsalndgckmfihvtfywomu +pneejqsalidgckzfihgtxywomu +pnecjqsalrdgckzfihptxiwomu +tnebjqsalrdgckznihvxxywomu +ptebjqsalrdgckzfimvtxywomm +wnebjqsalndgckzfihvtxywoju +fnebmqsplrdgckzfihvtxywomu +pnlbjqsalrdghkzficvtxywomu +pnebjqsesrdgckzdihvtxywomu +pnebjqsalregokzfirvtxywomu +pnebjtualrtgckzfihvtxywomu +pnebjwsdlrdgckzfihvtxywoml +pnlbjqsayrdgckzfqhvtxywomu +pnebjwsalpdgckzfihvtxywomc +pnqbjqsalcdgckzhihvtxywomu +pneujqsalrdgckzfhhvtxrwomu +pnebjqsalqdgcizfihvtxywimu +pnebjqsacldgckzfihvwxywomu +puebjqsalrdgckzfbhvtxyeomu +pnebjqsalrdgcyimihvtxywomu +pnebjlsalrdgckzfihvtxiwome +pnebfusalrdgckzfihvtxywodu +pnebjqsalrdgvazfirvtxywomu +pnebjqsalrdgckyfohvtxywomz +gnenjqsalrdgckzfihvtxynomu +mnebjqsalrdgckhfihvtxycomu +phebjqsalrdgckzfihvtxtworu +pnebjqsalrdgdkzfihvtxywfmj +pneveqsairdgckzfihvtxywomu +pnebjqsalcdlckzfihvtxywomg +pneajqsalrdgckzfihvtxygoxu +puebjqdclrdgckzfihvtxywomu +tuebjqsalrdgckzfihvtxywoou +pwenjqsalrdgckzfihvtxywomg +pnebjqsalrdgckzfihhltywomu +pnebjqsalrdgchzqievtxywomu +pnegjqsalrdgckzfiovtxywdmu +pnebjaralrqgckzfihvtxywomu +pnebjqsalrdrckzfimvtxywomm +pnebjqsalrdgckzfpgvtxewomu +pnebjqsalrdhcqzfihitxywomu +pnebjqsalrjgckefihmtxywomu +pnebjcsalrdgcksfikvtxywomu +pnebjqsalrdgckzfihvtxywdjc +pnebjqsazrjgckzjihvtxywomu +pnfbjqsclrdgckzfihvtxybomu +pnebjqsalrdgckuqihvtxyaomu +pfpbjzsalrdgckzfihvtxywomu +pnevjqsalrdgckwfihytxywomu +pnebjqsqlrkgckzfihvtvywomu +pneejqsalrdlckzfihvtxywopu +pnebjqsalcdgxkzfihvtxywomd +pneqjqsalrdgcvzzihvtxywomu +pnvbjqsalydgctzfihvtxywomu +pnebjqsalrdgckzzihvfxywomn +pnybjqsaerdgckzfihstxywomu +pnobjqsalrdkckzfihvtxywomv +pnebjqsalridckzfihvtxywfmu +pnhbjqsaludgckyfihvtxywomu +pnetjqsaprdgykzfihvtxywomu +wnebjqsalrdvcfzfihvtxywomu +pnetjqsalrdmckwfihvtxywomu +pnebjysalrdgcszfihvtxnwomu +pnebjqsrlrdgckzfihvtxywkhu +pnubjqsplrdgcjzfihvtxywomu +pnebjqsalrdzckzficjtxywomu +pnebjqsalregckzfinvtxywoku +pnebjqsalrcgckyfivvtxywomu +pyenjqsalrdgckzfihvnxywomu +prebjqsalrdnckzfihvtxysomg +pnebjnsalrdgchzfihvaxywomu +pnebjqsalrdgckzfihxagywomu +pnebjqsalrdgckzvihvtoywoml +pnebjqsilrdgckzfihvtfywgmu +pnebjqmalrdgckzfihvtvawomu +pnebqqsalrdgckzfiuvtfywomu +pneqjqsalrdgckzfihvqxywomi +pnebjesalrsgckzfihvtxywmmu +znebjqsblrdgckzfihvlxywomu +pnebjqsalrdgckzfuhvtlyworu +pnebjqsylrdgckzfihvqxpwomu +onebjqsalfdgckifihvtxywomu +pnebjusalrdgckzfihvtxywyml +pnebjssflrdgckzfigvtxywomu +pnebjfsdzrdgckzfihvtxywomu +pnebjqsalrdgcktfihvixywocu +gnebjqnaqrdgckzfihvtxywomu +pnebjqsaqrugckzfihhtxywomu +pnebjqsxlrdgckzfihvtxlwosu +pnebjzsalrdgckzmihvtxywovu +pnebgqsalrdgckzfizvtxyjomu +pnebjqsmlrdgckzfihvtxywsmi +pnebjqsakmdgckzjihvtxywomu +pnebjqdglrdgckvfihvtxywomu +pnebmhsalrdgckxfihvtxywomu +pneejqsalrdlckzfihvnxywomu +bnebjqsalmdgckzfihvfxywomu +bnebjnsalrdgcizfihvtxywomu +pnebjqsalhdgcdzfihvbxywomu +pnebjqsjlrdgckzfihvgiywomu +pnebjisalrdgckzfihvtxywqmi +pdebjqsalrdickzfihhtxywomu +pnebjqsalrdkckzfihvjeywomu +pneyjqsalrqgckzfihvtxywohu +pnebjqsalrdgckcfihvtxjlomu +plebqwsalrdgckzfihvtxywomu +pnebjqlalrdgckzfihetxynomu +sngbjqsalrdgckzfihvmxywomu diff --git a/2018/day2.py b/2018/day2.py new file mode 100644 index 0000000..faf169f --- /dev/null +++ b/2018/day2.py @@ -0,0 +1,34 @@ +with open('day2-input') as file: + data = file.readlines() +lines = [d.rstrip('\n') for d in data] +twos = 0 +threes = 0 +for line in lines: + charcounts = {} + for c in line: + if c in charcounts: + charcounts[c] += 1 + else: + charcounts[c] = 1 + if 2 in charcounts.values(): + twos += 1 + if 3 in charcounts.values(): + threes += 1 +print(twos * threes) # Part 1 + +def diff(s1, s2): + count = 0 + common = [] + for c1, c2 in zip(s1, s2): + if c1 != c2: + count += 1 + else: + common.append(c1) + return count, common + +for i, line in enumerate(lines): + for line2 in lines[i:]: + count, common = diff(line, line2) + if count == 1: + print(line, line2, ''.join(common)) # Part 2 + break diff --git a/2018/day3-input b/2018/day3-input new file mode 100644 index 0000000..e74ab81 --- /dev/null +++ b/2018/day3-input @@ -0,0 +1,1287 @@ +#1 @ 49,222: 19x20 +#2 @ 162,876: 28x29 +#3 @ 28,156: 17x18 +#4 @ 673,337: 24x24 +#5 @ 213,834: 20x23 +#6 @ 675,523: 20x13 +#7 @ 97,7: 11x27 +#8 @ 92,512: 11x17 +#9 @ 507,525: 27x20 +#10 @ 47,742: 21x25 +#11 @ 154,740: 28x25 +#12 @ 808,793: 28x24 +#13 @ 249,936: 13x11 +#14 @ 93,400: 8x9 +#15 @ 295,894: 17x22 +#16 @ 535,885: 8x5 +#17 @ 878,268: 13x11 +#18 @ 152,685: 28x24 +#19 @ 152,639: 22x26 +#20 @ 905,560: 23x27 +#21 @ 962,104: 19x12 +#22 @ 125,145: 19x22 +#23 @ 260,488: 13x21 +#24 @ 179,815: 12x24 +#25 @ 661,595: 4x6 +#26 @ 584,97: 10x15 +#27 @ 869,842: 11x19 +#28 @ 491,825: 19x25 +#29 @ 639,935: 10x28 +#30 @ 583,26: 11x13 +#31 @ 956,264: 22x17 +#32 @ 168,706: 22x21 +#33 @ 10,81: 29x18 +#34 @ 751,214: 16x21 +#35 @ 830,200: 17x20 +#36 @ 587,580: 18x20 +#37 @ 749,587: 10x13 +#38 @ 546,376: 28x25 +#39 @ 222,945: 11x28 +#40 @ 43,937: 14x27 +#41 @ 53,108: 25x21 +#42 @ 669,894: 28x28 +#43 @ 598,390: 23x25 +#44 @ 440,136: 24x28 +#45 @ 657,50: 16x13 +#46 @ 134,155: 15x28 +#47 @ 873,580: 28x16 +#48 @ 519,287: 23x24 +#49 @ 283,691: 12x20 +#50 @ 78,660: 11x23 +#51 @ 220,650: 24x21 +#52 @ 722,671: 11x11 +#53 @ 130,554: 12x26 +#54 @ 248,423: 28x20 +#55 @ 545,884: 10x3 +#56 @ 926,657: 21x13 +#57 @ 207,925: 22x27 +#58 @ 813,292: 17x24 +#59 @ 951,143: 23x25 +#60 @ 582,397: 18x19 +#61 @ 947,119: 14x24 +#62 @ 874,701: 12x10 +#63 @ 57,682: 10x18 +#64 @ 450,510: 11x28 +#65 @ 820,700: 27x17 +#66 @ 231,114: 13x15 +#67 @ 434,283: 22x18 +#68 @ 489,743: 23x28 +#69 @ 608,782: 10x24 +#70 @ 297,896: 23x29 +#71 @ 240,664: 13x29 +#72 @ 96,953: 26x28 +#73 @ 520,21: 21x25 +#74 @ 878,207: 16x21 +#75 @ 31,408: 19x26 +#76 @ 846,419: 6x19 +#77 @ 754,602: 17x29 +#78 @ 95,621: 27x27 +#79 @ 50,391: 10x24 +#80 @ 915,362: 27x22 +#81 @ 743,524: 25x23 +#82 @ 41,58: 11x26 +#83 @ 242,800: 27x21 +#84 @ 525,652: 15x26 +#85 @ 507,865: 18x26 +#86 @ 855,272: 29x28 +#87 @ 343,718: 12x13 +#88 @ 405,628: 18x28 +#89 @ 479,608: 20x13 +#90 @ 752,934: 26x24 +#91 @ 25,99: 14x12 +#92 @ 909,952: 25x26 +#93 @ 425,523: 27x12 +#94 @ 345,586: 29x27 +#95 @ 642,240: 16x10 +#96 @ 369,567: 26x24 +#97 @ 483,770: 23x10 +#98 @ 745,683: 27x19 +#99 @ 601,817: 16x21 +#100 @ 793,153: 13x23 +#101 @ 388,65: 15x20 +#102 @ 66,971: 10x24 +#103 @ 236,487: 25x21 +#104 @ 661,56: 13x14 +#105 @ 839,545: 16x16 +#106 @ 215,222: 23x22 +#107 @ 242,816: 26x23 +#108 @ 213,402: 26x15 +#109 @ 676,223: 21x22 +#110 @ 297,445: 15x21 +#111 @ 249,885: 27x28 +#112 @ 300,213: 10x12 +#113 @ 936,598: 22x11 +#114 @ 755,384: 13x19 +#115 @ 715,109: 15x11 +#116 @ 636,97: 18x20 +#117 @ 443,669: 27x19 +#118 @ 710,106: 16x20 +#119 @ 209,520: 16x28 +#120 @ 26,770: 12x23 +#121 @ 491,482: 12x11 +#122 @ 949,666: 10x27 +#123 @ 804,834: 13x22 +#124 @ 959,831: 17x24 +#125 @ 963,276: 11x25 +#126 @ 822,113: 29x29 +#127 @ 937,555: 28x25 +#128 @ 350,576: 28x24 +#129 @ 461,620: 29x20 +#130 @ 964,42: 23x14 +#131 @ 167,698: 20x19 +#132 @ 61,130: 10x17 +#133 @ 913,259: 20x22 +#134 @ 444,359: 9x3 +#135 @ 896,351: 20x17 +#136 @ 763,331: 11x29 +#137 @ 346,394: 28x22 +#138 @ 901,51: 27x24 +#139 @ 455,740: 27x10 +#140 @ 244,491: 23x18 +#141 @ 843,301: 24x13 +#142 @ 437,908: 11x26 +#143 @ 333,730: 27x10 +#144 @ 706,121: 12x15 +#145 @ 396,911: 12x28 +#146 @ 750,275: 13x21 +#147 @ 294,760: 21x20 +#148 @ 339,787: 11x10 +#149 @ 699,228: 14x29 +#150 @ 813,609: 16x10 +#151 @ 56,9: 18x22 +#152 @ 886,882: 24x12 +#153 @ 570,702: 11x24 +#154 @ 692,588: 19x29 +#155 @ 516,568: 12x27 +#156 @ 939,720: 25x16 +#157 @ 338,256: 13x11 +#158 @ 586,373: 27x21 +#159 @ 613,365: 28x18 +#160 @ 765,412: 24x22 +#161 @ 579,105: 11x27 +#162 @ 286,788: 15x25 +#163 @ 485,569: 23x11 +#164 @ 891,562: 29x24 +#165 @ 933,343: 21x21 +#166 @ 963,832: 16x12 +#167 @ 949,637: 27x27 +#168 @ 918,374: 19x18 +#169 @ 777,757: 17x21 +#170 @ 720,97: 24x29 +#171 @ 883,441: 6x19 +#172 @ 749,790: 11x18 +#173 @ 542,931: 13x23 +#174 @ 590,779: 27x10 +#175 @ 437,16: 19x11 +#176 @ 688,883: 21x10 +#177 @ 3,630: 21x21 +#178 @ 943,128: 16x11 +#179 @ 970,90: 13x14 +#180 @ 816,501: 13x26 +#181 @ 232,138: 25x16 +#182 @ 356,500: 16x16 +#183 @ 920,824: 12x17 +#184 @ 116,442: 18x12 +#185 @ 971,642: 11x25 +#186 @ 508,187: 19x22 +#187 @ 46,15: 24x27 +#188 @ 958,121: 13x12 +#189 @ 287,850: 18x21 +#190 @ 564,326: 26x11 +#191 @ 259,887: 24x29 +#192 @ 306,578: 13x14 +#193 @ 160,931: 29x13 +#194 @ 518,70: 28x21 +#195 @ 340,425: 29x15 +#196 @ 512,663: 26x15 +#197 @ 554,745: 19x25 +#198 @ 473,636: 29x14 +#199 @ 777,725: 8x3 +#200 @ 187,140: 11x24 +#201 @ 597,536: 11x14 +#202 @ 721,111: 4x5 +#203 @ 412,541: 10x14 +#204 @ 739,927: 21x17 +#205 @ 635,359: 25x20 +#206 @ 163,522: 17x11 +#207 @ 907,683: 15x21 +#208 @ 453,361: 21x24 +#209 @ 943,313: 25x22 +#210 @ 117,966: 19x27 +#211 @ 302,703: 19x15 +#212 @ 897,123: 14x17 +#213 @ 510,574: 11x10 +#214 @ 529,578: 17x22 +#215 @ 712,809: 15x15 +#216 @ 236,599: 16x29 +#217 @ 118,625: 29x18 +#218 @ 768,198: 16x23 +#219 @ 464,200: 29x15 +#220 @ 131,389: 23x11 +#221 @ 292,526: 18x10 +#222 @ 148,953: 14x12 +#223 @ 877,188: 18x26 +#224 @ 704,107: 11x24 +#225 @ 49,60: 18x17 +#226 @ 245,675: 29x12 +#227 @ 456,478: 29x18 +#228 @ 256,470: 27x26 +#229 @ 247,683: 17x10 +#230 @ 174,509: 12x26 +#231 @ 826,428: 25x21 +#232 @ 434,717: 22x17 +#233 @ 629,163: 13x10 +#234 @ 84,660: 22x19 +#235 @ 378,389: 18x16 +#236 @ 683,31: 13x27 +#237 @ 61,798: 29x12 +#238 @ 21,506: 21x11 +#239 @ 352,406: 12x10 +#240 @ 602,643: 22x22 +#241 @ 556,284: 13x11 +#242 @ 319,470: 24x10 +#243 @ 739,555: 17x29 +#244 @ 670,20: 14x18 +#245 @ 157,872: 27x21 +#246 @ 226,847: 28x13 +#247 @ 587,278: 14x27 +#248 @ 656,207: 26x26 +#249 @ 711,532: 17x19 +#250 @ 239,434: 20x16 +#251 @ 544,474: 23x13 +#252 @ 385,486: 26x16 +#253 @ 237,861: 10x6 +#254 @ 644,710: 24x16 +#255 @ 925,81: 28x11 +#256 @ 26,759: 18x26 +#257 @ 423,829: 24x18 +#258 @ 114,578: 26x14 +#259 @ 82,517: 22x18 +#260 @ 747,108: 17x18 +#261 @ 68,441: 15x18 +#262 @ 717,679: 11x15 +#263 @ 504,888: 21x15 +#264 @ 908,120: 23x15 +#265 @ 48,981: 29x10 +#266 @ 238,493: 27x15 +#267 @ 737,421: 29x13 +#268 @ 901,898: 24x14 +#269 @ 418,188: 18x19 +#270 @ 585,662: 19x26 +#271 @ 54,882: 27x10 +#272 @ 535,743: 20x21 +#273 @ 592,577: 24x25 +#274 @ 170,768: 24x15 +#275 @ 387,391: 26x26 +#276 @ 304,854: 21x17 +#277 @ 70,118: 24x15 +#278 @ 581,408: 18x25 +#279 @ 224,400: 13x19 +#280 @ 26,345: 27x13 +#281 @ 331,317: 13x26 +#282 @ 221,353: 27x22 +#283 @ 539,483: 16x16 +#284 @ 397,67: 17x23 +#285 @ 683,534: 22x29 +#286 @ 159,256: 20x25 +#287 @ 640,205: 14x17 +#288 @ 479,489: 16x17 +#289 @ 6,561: 16x28 +#290 @ 586,443: 24x18 +#291 @ 696,102: 13x12 +#292 @ 429,390: 23x13 +#293 @ 874,751: 28x14 +#294 @ 825,114: 27x12 +#295 @ 594,923: 20x24 +#296 @ 593,248: 13x19 +#297 @ 60,191: 18x11 +#298 @ 630,525: 22x23 +#299 @ 499,352: 10x13 +#300 @ 578,678: 24x29 +#301 @ 781,786: 10x24 +#302 @ 156,730: 19x26 +#303 @ 199,773: 26x10 +#304 @ 159,191: 17x13 +#305 @ 198,620: 11x13 +#306 @ 956,710: 10x13 +#307 @ 808,699: 23x10 +#308 @ 913,259: 27x10 +#309 @ 127,530: 14x29 +#310 @ 703,629: 28x10 +#311 @ 841,578: 22x15 +#312 @ 361,73: 22x28 +#313 @ 489,337: 20x28 +#314 @ 13,601: 16x21 +#315 @ 569,543: 28x10 +#316 @ 321,469: 17x17 +#317 @ 867,357: 27x23 +#318 @ 215,241: 29x23 +#319 @ 753,374: 24x17 +#320 @ 75,945: 24x27 +#321 @ 599,603: 10x15 +#322 @ 712,83: 20x23 +#323 @ 429,807: 14x19 +#324 @ 376,675: 15x13 +#325 @ 487,645: 28x22 +#326 @ 298,92: 27x17 +#327 @ 312,711: 26x22 +#328 @ 602,547: 22x23 +#329 @ 411,685: 14x23 +#330 @ 865,551: 18x14 +#331 @ 943,748: 21x25 +#332 @ 113,322: 12x19 +#333 @ 789,84: 21x29 +#334 @ 264,920: 20x12 +#335 @ 1,629: 25x10 +#336 @ 983,23: 12x29 +#337 @ 431,202: 28x26 +#338 @ 720,143: 19x29 +#339 @ 618,117: 23x10 +#340 @ 60,133: 28x25 +#341 @ 739,691: 14x15 +#342 @ 654,353: 14x15 +#343 @ 211,442: 17x19 +#344 @ 417,651: 29x21 +#345 @ 612,3: 21x17 +#346 @ 427,393: 11x21 +#347 @ 879,438: 20x27 +#348 @ 314,842: 17x22 +#349 @ 7,106: 26x14 +#350 @ 351,68: 15x25 +#351 @ 230,118: 16x17 +#352 @ 440,283: 19x17 +#353 @ 492,763: 21x24 +#354 @ 696,875: 21x14 +#355 @ 687,397: 12x12 +#356 @ 498,727: 19x22 +#357 @ 771,66: 23x24 +#358 @ 72,683: 26x11 +#359 @ 556,249: 22x17 +#360 @ 628,354: 14x17 +#361 @ 626,221: 24x27 +#362 @ 732,914: 16x21 +#363 @ 164,923: 14x15 +#364 @ 924,738: 27x25 +#365 @ 117,752: 15x21 +#366 @ 619,368: 15x8 +#367 @ 119,704: 20x16 +#368 @ 187,775: 17x15 +#369 @ 806,772: 19x27 +#370 @ 567,697: 16x23 +#371 @ 429,199: 10x15 +#372 @ 402,600: 16x24 +#373 @ 795,943: 19x19 +#374 @ 755,802: 18x24 +#375 @ 261,483: 10x17 +#376 @ 840,80: 22x10 +#377 @ 289,793: 3x10 +#378 @ 701,818: 15x28 +#379 @ 36,833: 13x10 +#380 @ 45,50: 13x21 +#381 @ 695,443: 17x11 +#382 @ 141,338: 12x14 +#383 @ 326,595: 21x23 +#384 @ 597,52: 11x26 +#385 @ 698,962: 29x27 +#386 @ 898,419: 10x20 +#387 @ 286,881: 28x19 +#388 @ 288,515: 22x21 +#389 @ 605,647: 24x26 +#390 @ 438,223: 22x17 +#391 @ 762,797: 22x20 +#392 @ 256,469: 27x20 +#393 @ 722,522: 20x23 +#394 @ 315,436: 28x25 +#395 @ 381,372: 25x20 +#396 @ 290,695: 21x19 +#397 @ 810,115: 21x18 +#398 @ 467,744: 25x13 +#399 @ 855,63: 26x24 +#400 @ 499,149: 19x21 +#401 @ 788,47: 24x29 +#402 @ 303,578: 16x11 +#403 @ 689,905: 12x19 +#404 @ 894,65: 29x28 +#405 @ 800,568: 23x14 +#406 @ 881,146: 12x24 +#407 @ 171,278: 18x12 +#408 @ 645,845: 20x17 +#409 @ 398,144: 23x13 +#410 @ 592,537: 10x10 +#411 @ 621,814: 14x12 +#412 @ 544,919: 11x23 +#413 @ 719,294: 12x19 +#414 @ 724,112: 16x29 +#415 @ 652,593: 28x14 +#416 @ 930,660: 6x3 +#417 @ 77,324: 23x19 +#418 @ 153,187: 21x25 +#419 @ 286,205: 16x19 +#420 @ 865,287: 14x19 +#421 @ 437,619: 29x16 +#422 @ 162,852: 28x12 +#423 @ 619,35: 11x15 +#424 @ 314,707: 12x21 +#425 @ 557,266: 19x25 +#426 @ 196,449: 21x27 +#427 @ 753,780: 16x23 +#428 @ 86,662: 18x18 +#429 @ 42,78: 29x11 +#430 @ 859,739: 29x23 +#431 @ 799,455: 20x15 +#432 @ 38,353: 21x20 +#433 @ 713,156: 27x13 +#434 @ 743,214: 16x19 +#435 @ 431,560: 29x14 +#436 @ 329,533: 22x19 +#437 @ 415,506: 28x24 +#438 @ 333,779: 25x12 +#439 @ 641,534: 17x19 +#440 @ 780,481: 17x3 +#441 @ 2,638: 26x25 +#442 @ 572,875: 14x16 +#443 @ 641,209: 12x12 +#444 @ 60,160: 19x28 +#445 @ 326,717: 18x17 +#446 @ 436,925: 17x19 +#447 @ 346,571: 25x16 +#448 @ 635,467: 12x12 +#449 @ 76,122: 19x13 +#450 @ 29,57: 27x25 +#451 @ 133,14: 27x28 +#452 @ 429,121: 12x19 +#453 @ 480,436: 14x28 +#454 @ 675,666: 24x15 +#455 @ 605,820: 26x22 +#456 @ 16,755: 24x17 +#457 @ 41,592: 15x14 +#458 @ 318,478: 15x17 +#459 @ 502,827: 25x17 +#460 @ 217,476: 28x28 +#461 @ 389,557: 19x18 +#462 @ 777,829: 14x15 +#463 @ 675,973: 10x16 +#464 @ 78,890: 11x26 +#465 @ 523,195: 20x22 +#466 @ 309,964: 19x18 +#467 @ 582,530: 10x25 +#468 @ 717,548: 20x26 +#469 @ 142,99: 6x10 +#470 @ 697,593: 11x26 +#471 @ 254,80: 23x12 +#472 @ 779,761: 8x4 +#473 @ 132,959: 22x24 +#474 @ 806,582: 11x29 +#475 @ 53,446: 12x14 +#476 @ 92,359: 19x24 +#477 @ 190,12: 23x28 +#478 @ 690,523: 10x17 +#479 @ 807,65: 20x13 +#480 @ 958,108: 13x21 +#481 @ 295,552: 22x28 +#482 @ 951,634: 27x23 +#483 @ 136,283: 26x20 +#484 @ 375,126: 25x29 +#485 @ 267,966: 24x23 +#486 @ 563,637: 18x25 +#487 @ 501,307: 28x11 +#488 @ 944,68: 12x19 +#489 @ 154,794: 11x21 +#490 @ 558,305: 28x22 +#491 @ 720,940: 16x26 +#492 @ 768,812: 18x14 +#493 @ 867,104: 23x23 +#494 @ 127,270: 21x21 +#495 @ 925,469: 11x24 +#496 @ 861,554: 20x24 +#497 @ 801,277: 28x18 +#498 @ 346,117: 19x26 +#499 @ 439,341: 25x25 +#500 @ 708,843: 10x10 +#501 @ 515,820: 18x25 +#502 @ 579,523: 15x13 +#503 @ 528,263: 28x12 +#504 @ 54,369: 23x28 +#505 @ 626,878: 23x27 +#506 @ 597,803: 15x23 +#507 @ 399,493: 21x16 +#508 @ 511,449: 29x28 +#509 @ 599,287: 11x15 +#510 @ 921,337: 24x28 +#511 @ 439,122: 23x20 +#512 @ 180,221: 24x13 +#513 @ 741,304: 24x11 +#514 @ 967,835: 20x20 +#515 @ 309,475: 16x28 +#516 @ 422,830: 13x25 +#517 @ 538,187: 28x10 +#518 @ 976,201: 12x16 +#519 @ 63,289: 28x10 +#520 @ 556,632: 17x21 +#521 @ 629,861: 20x24 +#522 @ 369,186: 20x20 +#523 @ 621,160: 14x19 +#524 @ 505,167: 24x15 +#525 @ 84,124: 25x16 +#526 @ 776,839: 27x20 +#527 @ 396,277: 21x29 +#528 @ 776,232: 21x24 +#529 @ 380,382: 16x20 +#530 @ 959,914: 23x17 +#531 @ 712,919: 17x13 +#532 @ 932,59: 26x13 +#533 @ 312,812: 21x17 +#534 @ 188,260: 27x27 +#535 @ 145,733: 18x13 +#536 @ 919,571: 23x25 +#537 @ 876,749: 29x13 +#538 @ 699,929: 16x10 +#539 @ 853,604: 10x11 +#540 @ 336,444: 11x29 +#541 @ 11,542: 29x19 +#542 @ 561,971: 21x24 +#543 @ 436,350: 29x19 +#544 @ 857,588: 20x12 +#545 @ 547,389: 15x20 +#546 @ 658,178: 28x13 +#547 @ 639,114: 12x17 +#548 @ 128,746: 12x13 +#549 @ 377,242: 23x13 +#550 @ 382,158: 22x20 +#551 @ 668,969: 11x25 +#552 @ 467,181: 10x25 +#553 @ 760,337: 29x20 +#554 @ 674,210: 19x18 +#555 @ 146,163: 15x25 +#556 @ 126,320: 15x18 +#557 @ 617,43: 12x27 +#558 @ 170,746: 29x20 +#559 @ 821,846: 17x27 +#560 @ 710,18: 29x15 +#561 @ 113,29: 22x26 +#562 @ 116,22: 16x23 +#563 @ 794,506: 13x27 +#564 @ 402,0: 24x20 +#565 @ 117,79: 25x21 +#566 @ 682,670: 16x18 +#567 @ 516,554: 13x17 +#568 @ 935,468: 21x17 +#569 @ 565,966: 24x28 +#570 @ 41,834: 19x14 +#571 @ 103,721: 26x25 +#572 @ 651,18: 29x25 +#573 @ 849,419: 23x25 +#574 @ 940,700: 27x28 +#575 @ 291,854: 21x12 +#576 @ 23,536: 24x25 +#577 @ 860,908: 27x12 +#578 @ 48,186: 17x10 +#579 @ 38,895: 24x27 +#580 @ 630,886: 12x23 +#581 @ 118,957: 25x14 +#582 @ 530,205: 13x22 +#583 @ 666,523: 13x15 +#584 @ 966,172: 10x10 +#585 @ 292,217: 24x19 +#586 @ 426,688: 22x18 +#587 @ 430,701: 12x16 +#588 @ 398,510: 27x19 +#589 @ 645,938: 15x26 +#590 @ 526,334: 25x29 +#591 @ 192,600: 21x10 +#592 @ 178,675: 14x29 +#593 @ 377,145: 25x11 +#594 @ 733,566: 25x29 +#595 @ 843,190: 21x23 +#596 @ 261,823: 13x17 +#597 @ 259,432: 21x26 +#598 @ 344,914: 17x19 +#599 @ 729,149: 12x16 +#600 @ 745,287: 14x10 +#601 @ 866,753: 29x28 +#602 @ 753,793: 14x18 +#603 @ 202,278: 20x17 +#604 @ 643,572: 18x29 +#605 @ 715,942: 16x15 +#606 @ 360,402: 15x12 +#607 @ 957,637: 21x14 +#608 @ 916,656: 10x10 +#609 @ 940,706: 20x10 +#610 @ 217,474: 27x22 +#611 @ 404,544: 11x14 +#612 @ 452,89: 13x20 +#613 @ 447,973: 22x25 +#614 @ 959,272: 21x27 +#615 @ 833,709: 25x25 +#616 @ 770,202: 15x18 +#617 @ 13,449: 16x25 +#618 @ 735,644: 12x16 +#619 @ 514,776: 15x17 +#620 @ 929,504: 14x28 +#621 @ 939,507: 13x22 +#622 @ 681,539: 11x15 +#623 @ 25,9: 29x18 +#624 @ 595,544: 20x10 +#625 @ 497,194: 12x12 +#626 @ 250,945: 28x20 +#627 @ 422,830: 11x13 +#628 @ 964,655: 14x21 +#629 @ 491,458: 15x13 +#630 @ 977,733: 10x17 +#631 @ 430,380: 28x21 +#632 @ 76,298: 26x26 +#633 @ 400,957: 29x21 +#634 @ 500,880: 18x29 +#635 @ 884,678: 12x21 +#636 @ 20,162: 21x25 +#637 @ 128,77: 14x15 +#638 @ 925,596: 29x26 +#639 @ 734,105: 29x24 +#640 @ 70,445: 9x9 +#641 @ 497,839: 22x19 +#642 @ 263,940: 14x16 +#643 @ 306,416: 23x16 +#644 @ 715,177: 27x18 +#645 @ 237,327: 12x18 +#646 @ 36,408: 15x15 +#647 @ 920,822: 15x23 +#648 @ 130,817: 25x29 +#649 @ 164,821: 22x22 +#650 @ 743,471: 13x14 +#651 @ 387,491: 17x16 +#652 @ 282,646: 29x20 +#653 @ 762,364: 28x19 +#654 @ 465,349: 12x29 +#655 @ 959,190: 21x15 +#656 @ 643,547: 14x20 +#657 @ 727,635: 10x13 +#658 @ 155,501: 14x28 +#659 @ 169,653: 15x26 +#660 @ 483,478: 16x12 +#661 @ 262,861: 15x28 +#662 @ 852,333: 25x28 +#663 @ 129,670: 18x22 +#664 @ 691,849: 28x18 +#665 @ 685,240: 28x26 +#666 @ 560,688: 22x26 +#667 @ 959,25: 13x19 +#668 @ 153,754: 15x21 +#669 @ 159,876: 12x15 +#670 @ 396,74: 20x24 +#671 @ 244,867: 24x26 +#672 @ 620,157: 20x10 +#673 @ 329,409: 21x24 +#674 @ 591,75: 23x25 +#675 @ 960,839: 23x12 +#676 @ 283,88: 15x22 +#677 @ 427,781: 15x21 +#678 @ 595,295: 28x19 +#679 @ 303,461: 16x12 +#680 @ 855,582: 15x12 +#681 @ 235,674: 21x13 +#682 @ 888,178: 15x29 +#683 @ 222,952: 26x26 +#684 @ 879,902: 10x11 +#685 @ 745,345: 24x22 +#686 @ 915,197: 15x21 +#687 @ 66,289: 28x10 +#688 @ 133,915: 20x18 +#689 @ 235,855: 15x25 +#690 @ 686,377: 11x26 +#691 @ 67,3: 25x13 +#692 @ 170,660: 16x16 +#693 @ 280,275: 23x24 +#694 @ 284,859: 25x21 +#695 @ 411,735: 20x23 +#696 @ 762,597: 15x14 +#697 @ 420,77: 10x26 +#698 @ 743,512: 17x28 +#699 @ 741,784: 23x26 +#700 @ 174,131: 19x15 +#701 @ 821,673: 27x19 +#702 @ 830,970: 13x20 +#703 @ 320,643: 25x17 +#704 @ 218,521: 21x22 +#705 @ 622,473: 21x14 +#706 @ 552,326: 28x28 +#707 @ 239,70: 26x10 +#708 @ 444,626: 14x14 +#709 @ 912,809: 27x18 +#710 @ 772,764: 13x25 +#711 @ 529,644: 21x26 +#712 @ 564,391: 27x28 +#713 @ 702,126: 16x20 +#714 @ 317,937: 28x11 +#715 @ 597,936: 13x24 +#716 @ 732,536: 28x15 +#717 @ 182,285: 22x15 +#718 @ 963,397: 23x24 +#719 @ 428,299: 18x17 +#720 @ 798,348: 21x26 +#721 @ 922,377: 23x11 +#722 @ 336,246: 10x24 +#723 @ 708,668: 10x21 +#724 @ 827,296: 27x17 +#725 @ 134,970: 21x29 +#726 @ 2,21: 20x20 +#727 @ 177,216: 15x18 +#728 @ 789,926: 15x28 +#729 @ 728,452: 27x25 +#730 @ 817,303: 25x10 +#731 @ 857,421: 29x25 +#732 @ 293,879: 10x27 +#733 @ 8,746: 28x20 +#734 @ 148,518: 16x18 +#735 @ 835,435: 10x13 +#736 @ 80,798: 24x12 +#737 @ 88,29: 17x26 +#738 @ 981,77: 17x12 +#739 @ 179,890: 20x26 +#740 @ 565,851: 15x23 +#741 @ 512,786: 13x11 +#742 @ 595,828: 24x10 +#743 @ 272,54: 15x29 +#744 @ 452,120: 23x12 +#745 @ 387,526: 28x15 +#746 @ 966,43: 28x29 +#747 @ 176,197: 10x22 +#748 @ 477,959: 21x29 +#749 @ 199,19: 27x12 +#750 @ 404,619: 13x17 +#751 @ 811,681: 23x13 +#752 @ 395,163: 11x28 +#753 @ 133,272: 29x28 +#754 @ 404,618: 18x24 +#755 @ 387,294: 12x16 +#756 @ 88,946: 24x11 +#757 @ 132,729: 27x21 +#758 @ 73,132: 24x29 +#759 @ 958,234: 10x18 +#760 @ 508,824: 27x11 +#761 @ 910,357: 13x17 +#762 @ 887,674: 22x21 +#763 @ 896,579: 10x23 +#764 @ 451,565: 16x23 +#765 @ 440,702: 10x11 +#766 @ 446,363: 18x21 +#767 @ 631,87: 27x16 +#768 @ 888,900: 21x23 +#769 @ 395,638: 15x25 +#770 @ 104,964: 18x11 +#771 @ 808,407: 24x16 +#772 @ 552,169: 10x22 +#773 @ 525,874: 10x12 +#774 @ 422,220: 16x14 +#775 @ 317,742: 23x18 +#776 @ 509,111: 27x10 +#777 @ 590,29: 13x11 +#778 @ 515,21: 20x15 +#779 @ 962,624: 13x21 +#780 @ 449,409: 29x25 +#781 @ 754,967: 17x14 +#782 @ 45,545: 23x23 +#783 @ 816,833: 18x11 +#784 @ 932,633: 22x25 +#785 @ 785,345: 21x10 +#786 @ 931,755: 28x17 +#787 @ 126,92: 28x10 +#788 @ 644,226: 19x28 +#789 @ 172,612: 29x18 +#790 @ 789,163: 19x14 +#791 @ 828,417: 10x18 +#792 @ 703,662: 10x11 +#793 @ 971,7: 17x22 +#794 @ 149,71: 12x24 +#795 @ 64,50: 12x27 +#796 @ 127,16: 20x25 +#797 @ 330,614: 19x16 +#798 @ 545,659: 27x20 +#799 @ 55,121: 25x13 +#800 @ 198,533: 28x26 +#801 @ 261,557: 27x11 +#802 @ 303,107: 10x19 +#803 @ 558,939: 24x15 +#804 @ 287,830: 29x28 +#805 @ 904,864: 15x29 +#806 @ 471,769: 25x29 +#807 @ 838,589: 29x25 +#808 @ 945,304: 25x20 +#809 @ 623,173: 28x20 +#810 @ 803,448: 14x10 +#811 @ 132,321: 21x22 +#812 @ 244,918: 25x24 +#813 @ 127,326: 22x26 +#814 @ 179,495: 10x16 +#815 @ 160,873: 24x19 +#816 @ 558,93: 25x17 +#817 @ 326,700: 26x26 +#818 @ 165,779: 13x21 +#819 @ 109,437: 24x25 +#820 @ 17,58: 27x19 +#821 @ 889,101: 12x19 +#822 @ 319,171: 27x25 +#823 @ 51,960: 16x17 +#824 @ 955,544: 26x20 +#825 @ 976,71: 15x19 +#826 @ 954,379: 26x26 +#827 @ 516,361: 11x10 +#828 @ 512,521: 18x28 +#829 @ 676,263: 27x23 +#830 @ 825,386: 11x14 +#831 @ 253,654: 15x12 +#832 @ 318,459: 20x15 +#833 @ 940,309: 29x16 +#834 @ 951,310: 18x26 +#835 @ 496,942: 22x28 +#836 @ 355,821: 19x26 +#837 @ 443,396: 21x12 +#838 @ 958,141: 15x27 +#839 @ 849,913: 27x20 +#840 @ 2,445: 18x27 +#841 @ 722,129: 21x23 +#842 @ 874,64: 15x25 +#843 @ 872,607: 26x19 +#844 @ 846,591: 23x23 +#845 @ 500,823: 28x11 +#846 @ 864,847: 19x24 +#847 @ 257,48: 16x23 +#848 @ 497,772: 28x12 +#849 @ 601,611: 10x23 +#850 @ 624,348: 20x24 +#851 @ 284,285: 9x10 +#852 @ 684,875: 25x20 +#853 @ 279,426: 28x11 +#854 @ 777,236: 11x19 +#855 @ 117,740: 10x17 +#856 @ 262,886: 27x13 +#857 @ 37,587: 19x25 +#858 @ 237,537: 28x16 +#859 @ 329,302: 25x17 +#860 @ 312,7: 23x22 +#861 @ 741,93: 18x29 +#862 @ 228,887: 18x12 +#863 @ 77,962: 20x15 +#864 @ 531,878: 17x22 +#865 @ 131,385: 20x12 +#866 @ 148,955: 15x23 +#867 @ 653,698: 27x27 +#868 @ 188,121: 23x17 +#869 @ 310,288: 22x14 +#870 @ 749,461: 14x29 +#871 @ 307,713: 12x29 +#872 @ 409,719: 24x28 +#873 @ 291,650: 22x16 +#874 @ 643,560: 26x21 +#875 @ 20,3: 16x26 +#876 @ 709,447: 10x11 +#877 @ 821,223: 13x16 +#878 @ 516,740: 18x20 +#879 @ 66,222: 3x5 +#880 @ 108,532: 20x17 +#881 @ 447,73: 22x11 +#882 @ 121,289: 20x11 +#883 @ 44,753: 20x12 +#884 @ 90,677: 20x15 +#885 @ 718,179: 13x18 +#886 @ 830,700: 25x13 +#887 @ 288,317: 26x12 +#888 @ 117,700: 25x25 +#889 @ 306,743: 24x10 +#890 @ 744,966: 18x14 +#891 @ 530,665: 21x10 +#892 @ 743,657: 11x10 +#893 @ 244,959: 12x22 +#894 @ 748,130: 22x11 +#895 @ 657,827: 24x10 +#896 @ 194,607: 29x15 +#897 @ 861,598: 17x14 +#898 @ 843,735: 14x18 +#899 @ 64,121: 26x29 +#900 @ 843,588: 13x21 +#901 @ 755,225: 26x12 +#902 @ 612,339: 25x22 +#903 @ 588,98: 27x10 +#904 @ 309,583: 27x17 +#905 @ 508,807: 22x27 +#906 @ 221,618: 11x16 +#907 @ 590,510: 23x28 +#908 @ 825,794: 22x28 +#909 @ 87,397: 27x16 +#910 @ 389,346: 12x27 +#911 @ 200,623: 5x3 +#912 @ 265,313: 26x24 +#913 @ 264,935: 16x29 +#914 @ 612,905: 20x13 +#915 @ 498,745: 29x12 +#916 @ 766,198: 10x29 +#917 @ 410,941: 24x17 +#918 @ 399,97: 14x15 +#919 @ 287,863: 19x27 +#920 @ 550,651: 27x28 +#921 @ 354,915: 28x21 +#922 @ 409,600: 17x21 +#923 @ 348,813: 28x15 +#924 @ 983,796: 15x21 +#925 @ 137,707: 22x10 +#926 @ 400,950: 29x14 +#927 @ 183,681: 23x24 +#928 @ 565,245: 25x28 +#929 @ 286,79: 29x25 +#930 @ 956,553: 18x19 +#931 @ 850,419: 18x12 +#932 @ 694,1: 18x19 +#933 @ 753,429: 16x12 +#934 @ 309,976: 14x10 +#935 @ 405,183: 13x13 +#936 @ 855,598: 28x14 +#937 @ 40,439: 24x19 +#938 @ 591,551: 21x17 +#939 @ 398,100: 29x24 +#940 @ 413,711: 28x17 +#941 @ 62,285: 23x27 +#942 @ 737,342: 29x28 +#943 @ 22,612: 16x15 +#944 @ 822,418: 12x18 +#945 @ 51,51: 10x22 +#946 @ 542,249: 11x24 +#947 @ 664,23: 24x20 +#948 @ 366,66: 25x27 +#949 @ 227,829: 12x15 +#950 @ 160,655: 24x25 +#951 @ 412,147: 13x10 +#952 @ 814,406: 24x21 +#953 @ 941,919: 25x20 +#954 @ 858,407: 14x21 +#955 @ 291,869: 10x15 +#956 @ 844,417: 11x24 +#957 @ 169,836: 16x20 +#958 @ 447,12: 13x12 +#959 @ 306,773: 12x27 +#960 @ 291,851: 27x11 +#961 @ 414,803: 11x22 +#962 @ 427,760: 24x22 +#963 @ 647,10: 11x28 +#964 @ 860,581: 24x18 +#965 @ 616,8: 19x20 +#966 @ 286,422: 24x10 +#967 @ 889,551: 16x14 +#968 @ 302,568: 16x25 +#969 @ 232,83: 27x25 +#970 @ 720,543: 24x21 +#971 @ 322,317: 14x23 +#972 @ 180,731: 25x28 +#973 @ 361,131: 27x13 +#974 @ 345,616: 15x24 +#975 @ 597,43: 26x17 +#976 @ 946,260: 26x15 +#977 @ 646,831: 18x14 +#978 @ 96,810: 11x11 +#979 @ 840,973: 10x17 +#980 @ 133,821: 16x18 +#981 @ 728,398: 15x27 +#982 @ 835,562: 12x25 +#983 @ 877,789: 10x20 +#984 @ 417,136: 16x24 +#985 @ 600,822: 16x11 +#986 @ 825,405: 25x15 +#987 @ 20,507: 28x22 +#988 @ 923,646: 27x20 +#989 @ 43,68: 26x22 +#990 @ 241,661: 29x17 +#991 @ 772,445: 19x15 +#992 @ 925,940: 18x27 +#993 @ 251,615: 21x20 +#994 @ 814,719: 12x29 +#995 @ 43,141: 26x12 +#996 @ 129,278: 20x17 +#997 @ 266,925: 17x23 +#998 @ 171,475: 10x25 +#999 @ 641,534: 29x12 +#1000 @ 972,48: 25x17 +#1001 @ 806,913: 15x14 +#1002 @ 770,952: 13x11 +#1003 @ 554,841: 18x18 +#1004 @ 36,37: 14x11 +#1005 @ 414,620: 15x17 +#1006 @ 638,223: 18x27 +#1007 @ 374,674: 13x15 +#1008 @ 921,650: 19x17 +#1009 @ 507,746: 28x28 +#1010 @ 782,456: 11x26 +#1011 @ 329,386: 22x20 +#1012 @ 579,932: 18x25 +#1013 @ 404,833: 28x15 +#1014 @ 157,102: 24x17 +#1015 @ 653,209: 14x29 +#1016 @ 318,98: 27x11 +#1017 @ 507,495: 25x29 +#1018 @ 803,745: 19x19 +#1019 @ 731,94: 15x21 +#1020 @ 198,629: 21x28 +#1021 @ 587,656: 23x19 +#1022 @ 44,912: 28x21 +#1023 @ 0,631: 25x12 +#1024 @ 47,375: 22x14 +#1025 @ 934,124: 25x16 +#1026 @ 674,11: 21x21 +#1027 @ 300,823: 28x24 +#1028 @ 380,406: 18x27 +#1029 @ 917,381: 21x22 +#1030 @ 717,646: 26x10 +#1031 @ 112,737: 26x11 +#1032 @ 928,544: 27x23 +#1033 @ 353,597: 14x3 +#1034 @ 87,324: 28x18 +#1035 @ 292,656: 28x17 +#1036 @ 970,269: 16x22 +#1037 @ 89,324: 15x16 +#1038 @ 540,876: 19x20 +#1039 @ 754,812: 24x26 +#1040 @ 819,32: 16x23 +#1041 @ 775,720: 13x21 +#1042 @ 929,69: 11x24 +#1043 @ 911,45: 19x17 +#1044 @ 577,665: 21x11 +#1045 @ 115,27: 13x10 +#1046 @ 396,739: 25x27 +#1047 @ 502,874: 14x21 +#1048 @ 956,364: 17x22 +#1049 @ 316,524: 24x22 +#1050 @ 895,903: 21x12 +#1051 @ 566,884: 29x16 +#1052 @ 186,749: 19x24 +#1053 @ 630,536: 18x21 +#1054 @ 161,753: 14x13 +#1055 @ 239,935: 13x17 +#1056 @ 62,764: 12x16 +#1057 @ 399,617: 20x22 +#1058 @ 867,433: 10x10 +#1059 @ 229,544: 17x14 +#1060 @ 666,391: 27x19 +#1061 @ 228,480: 10x29 +#1062 @ 801,561: 21x13 +#1063 @ 62,218: 13x15 +#1064 @ 804,506: 16x24 +#1065 @ 31,726: 26x25 +#1066 @ 813,872: 22x14 +#1067 @ 883,913: 21x18 +#1068 @ 930,270: 28x10 +#1069 @ 453,398: 24x16 +#1070 @ 289,404: 26x15 +#1071 @ 432,749: 25x11 +#1072 @ 601,51: 10x10 +#1073 @ 726,934: 10x28 +#1074 @ 77,648: 16x16 +#1075 @ 684,623: 26x10 +#1076 @ 501,811: 10x16 +#1077 @ 749,865: 15x14 +#1078 @ 432,721: 20x25 +#1079 @ 623,818: 10x15 +#1080 @ 431,843: 10x11 +#1081 @ 430,807: 25x13 +#1082 @ 707,290: 25x10 +#1083 @ 906,806: 23x13 +#1084 @ 946,351: 12x25 +#1085 @ 882,202: 16x14 +#1086 @ 950,626: 24x13 +#1087 @ 189,721: 14x13 +#1088 @ 816,674: 16x18 +#1089 @ 877,580: 24x24 +#1090 @ 215,531: 20x18 +#1091 @ 670,873: 23x13 +#1092 @ 339,122: 19x25 +#1093 @ 106,805: 24x12 +#1094 @ 331,7: 28x18 +#1095 @ 215,800: 18x29 +#1096 @ 588,257: 19x20 +#1097 @ 342,418: 21x21 +#1098 @ 982,780: 11x18 +#1099 @ 586,912: 26x25 +#1100 @ 972,170: 12x10 +#1101 @ 804,496: 21x18 +#1102 @ 837,66: 12x17 +#1103 @ 190,763: 17x19 +#1104 @ 904,215: 20x27 +#1105 @ 370,489: 29x22 +#1106 @ 530,572: 20x18 +#1107 @ 592,518: 12x28 +#1108 @ 827,739: 24x10 +#1109 @ 495,621: 13x20 +#1110 @ 412,603: 10x28 +#1111 @ 79,306: 17x17 +#1112 @ 676,387: 19x25 +#1113 @ 881,686: 13x17 +#1114 @ 892,672: 14x14 +#1115 @ 679,329: 12x17 +#1116 @ 289,209: 19x19 +#1117 @ 738,488: 26x12 +#1118 @ 144,669: 25x12 +#1119 @ 809,269: 10x17 +#1120 @ 41,384: 23x12 +#1121 @ 601,931: 24x19 +#1122 @ 599,638: 25x15 +#1123 @ 666,883: 25x10 +#1124 @ 511,863: 28x29 +#1125 @ 612,293: 20x13 +#1126 @ 492,203: 25x17 +#1127 @ 392,597: 19x15 +#1128 @ 605,809: 27x16 +#1129 @ 707,932: 12x25 +#1130 @ 257,933: 15x20 +#1131 @ 847,352: 18x23 +#1132 @ 222,319: 27x23 +#1133 @ 288,667: 13x25 +#1134 @ 951,503: 14x17 +#1135 @ 922,370: 22x12 +#1136 @ 260,546: 28x19 +#1137 @ 773,212: 19x26 +#1138 @ 864,432: 11x12 +#1139 @ 545,384: 27x18 +#1140 @ 68,35: 11x26 +#1141 @ 823,189: 25x23 +#1142 @ 251,636: 29x23 +#1143 @ 395,946: 12x22 +#1144 @ 783,251: 11x14 +#1145 @ 489,246: 12x24 +#1146 @ 961,245: 13x19 +#1147 @ 911,529: 29x25 +#1148 @ 864,798: 21x14 +#1149 @ 224,346: 13x25 +#1150 @ 202,584: 28x21 +#1151 @ 753,588: 10x16 +#1152 @ 303,827: 27x19 +#1153 @ 299,523: 12x12 +#1154 @ 739,314: 12x20 +#1155 @ 545,453: 11x12 +#1156 @ 580,456: 15x11 +#1157 @ 170,836: 18x15 +#1158 @ 233,135: 20x20 +#1159 @ 395,540: 21x21 +#1160 @ 679,825: 13x17 +#1161 @ 798,902: 20x12 +#1162 @ 342,513: 20x19 +#1163 @ 22,23: 24x29 +#1164 @ 316,645: 29x18 +#1165 @ 885,37: 25x24 +#1166 @ 414,10: 14x17 +#1167 @ 123,97: 23x18 +#1168 @ 155,851: 27x29 +#1169 @ 413,850: 25x12 +#1170 @ 906,432: 24x15 +#1171 @ 5,563: 25x27 +#1172 @ 557,500: 10x25 +#1173 @ 375,165: 23x25 +#1174 @ 844,176: 20x17 +#1175 @ 775,474: 26x16 +#1176 @ 61,539: 17x14 +#1177 @ 263,970: 22x14 +#1178 @ 596,169: 12x12 +#1179 @ 323,295: 29x25 +#1180 @ 746,858: 14x21 +#1181 @ 232,80: 24x14 +#1182 @ 945,660: 15x14 +#1183 @ 415,811: 27x25 +#1184 @ 529,529: 13x23 +#1185 @ 223,852: 27x28 +#1186 @ 519,567: 10x12 +#1187 @ 764,364: 13x11 +#1188 @ 515,59: 25x17 +#1189 @ 294,408: 24x28 +#1190 @ 283,119: 29x15 +#1191 @ 608,40: 19x21 +#1192 @ 308,529: 14x10 +#1193 @ 803,689: 25x24 +#1194 @ 55,684: 11x21 +#1195 @ 397,550: 18x20 +#1196 @ 166,892: 17x28 +#1197 @ 457,70: 28x22 +#1198 @ 430,971: 20x16 +#1199 @ 134,21: 29x20 +#1200 @ 148,99: 15x23 +#1201 @ 864,364: 26x12 +#1202 @ 943,747: 17x14 +#1203 @ 67,330: 3x5 +#1204 @ 158,182: 27x18 +#1205 @ 397,229: 29x16 +#1206 @ 828,561: 28x25 +#1207 @ 144,882: 21x14 +#1208 @ 59,318: 22x23 +#1209 @ 137,795: 23x29 +#1210 @ 889,357: 17x27 +#1211 @ 746,596: 24x17 +#1212 @ 308,305: 24x27 +#1213 @ 604,568: 23x19 +#1214 @ 813,236: 29x13 +#1215 @ 527,654: 9x9 +#1216 @ 103,954: 12x10 +#1217 @ 668,869: 11x25 +#1218 @ 290,427: 10x22 +#1219 @ 544,437: 16x23 +#1220 @ 528,117: 21x16 +#1221 @ 20,487: 23x16 +#1222 @ 498,256: 12x27 +#1223 @ 303,487: 14x25 +#1224 @ 428,219: 17x23 +#1225 @ 404,532: 21x24 +#1226 @ 426,740: 22x26 +#1227 @ 426,308: 25x13 +#1228 @ 674,265: 24x19 +#1229 @ 945,649: 19x23 +#1230 @ 544,516: 14x20 +#1231 @ 44,172: 22x13 +#1232 @ 973,738: 15x14 +#1233 @ 184,619: 11x17 +#1234 @ 598,530: 15x22 +#1235 @ 967,86: 10x11 +#1236 @ 27,76: 26x19 +#1237 @ 737,919: 26x19 +#1238 @ 106,362: 11x12 +#1239 @ 833,775: 27x23 +#1240 @ 209,828: 24x12 +#1241 @ 140,97: 13x15 +#1242 @ 411,671: 11x16 +#1243 @ 951,153: 21x18 +#1244 @ 979,112: 14x29 +#1245 @ 813,420: 21x15 +#1246 @ 413,191: 25x16 +#1247 @ 131,180: 29x16 +#1248 @ 604,899: 29x15 +#1249 @ 147,909: 17x10 +#1250 @ 857,53: 29x14 +#1251 @ 265,914: 11x17 +#1252 @ 263,817: 18x27 +#1253 @ 451,57: 27x23 +#1254 @ 348,63: 27x11 +#1255 @ 558,75: 12x23 +#1256 @ 152,889: 25x19 +#1257 @ 874,267: 11x13 +#1258 @ 578,329: 28x14 +#1259 @ 882,922: 16x16 +#1260 @ 872,129: 20x18 +#1261 @ 756,322: 21x12 +#1262 @ 682,830: 27x14 +#1263 @ 463,203: 14x19 +#1264 @ 770,222: 28x17 +#1265 @ 494,551: 11x27 +#1266 @ 754,317: 29x29 +#1267 @ 852,531: 25x17 +#1268 @ 185,612: 19x20 +#1269 @ 663,350: 19x11 +#1270 @ 562,534: 19x19 +#1271 @ 76,276: 26x20 +#1272 @ 821,25: 23x13 +#1273 @ 172,117: 23x20 +#1274 @ 829,397: 13x19 +#1275 @ 671,185: 16x16 +#1276 @ 390,914: 14x19 +#1277 @ 31,500: 25x27 +#1278 @ 806,133: 24x13 +#1279 @ 604,563: 26x22 +#1280 @ 499,426: 18x25 +#1281 @ 881,59: 21x11 +#1282 @ 65,236: 25x16 +#1283 @ 324,186: 13x20 +#1284 @ 322,925: 28x22 +#1285 @ 604,176: 10x10 +#1286 @ 782,235: 17x22 +#1287 @ 152,94: 10x27 diff --git a/2018/day3.py b/2018/day3.py new file mode 100644 index 0000000..6b4d1df --- /dev/null +++ b/2018/day3.py @@ -0,0 +1,21 @@ +with open('day3-input', 'r') as file: + data = [l.strip('\n') for l in file] + +import numpy as np +fabric = np.zeros((1000, 1000), dtype=np.int32) + +for line in data: + tokens = line.split(' ') + w, h = [int(i) for i in tokens[-1].split('x')] + x, y = [int(i) for i in tokens[-2].rstrip(':').split(',')] + fabric[x:x+w, y:y+h] += 1 + +print((fabric > 1).sum()) # Part 1 + +for line in data: + tokens = line.split(' ') + w, h = [int(i) for i in tokens[-1].split('x')] + x, y = [int(i) for i in tokens[-2].rstrip(':').split(',')] + if fabric[x:x+w, y:y+h].sum() == w*h: + print(tokens[0]) # Part 2 + break