Add solution for day 13
This commit is contained in:
1 parent
279f8ed7aa
commit
ac4b409df4
4 files changed
+1095
No files matched your search
Executable
+38
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
|
||||
def printi(dots):
|
||||
st = ''
|
||||
for y in range(max(dots,key=lambda x: x[1])[1]+1):
|
||||
for x in range(max(dots,key=lambda x: x[0])[0]+1):
|
||||
if (x,y) in dots: st += '#'
|
||||
else: st += '.'
|
||||
print(st)
|
||||
st = ''
|
||||
|
||||
def fold(f, dots):
|
||||
ndots, c = set(), f[1]
|
||||
if f[0] == 'x': r = 0
|
||||
elif f[0] == 'y': r = 1
|
||||
for dot in dots:
|
||||
if dot[r] < c: ndots.add(dot)
|
||||
elif dot[r] > c: ndots.add([(c-(dot[0]-c),dot[1]), (dot[0],c-(dot[1]-c))][r])
|
||||
return ndots
|
||||
|
||||
if __name__ == '__main__':
|
||||
lines = open(sys.argv[1]).read().split('\n\n')
|
||||
dots = set([tuple(map(int, line.split(','))) for line in lines[0].split('\n')])
|
||||
folds = [i for i in map(lambda x: (x[0],int(x[1])), [tuple(line.strip('fold along ').split('=')) for line in lines[1].split('\n')[:-1]])]
|
||||
|
||||
# challenge 1
|
||||
res1 = str(sum(1 for dot in fold(folds[0], dots)))
|
||||
print("challenge 1:" + "\n" + res1 + "\n")
|
||||
|
||||
# challenge 2
|
||||
for f in folds: dots = fold(f,dots)
|
||||
printi(dots)
|
||||
|
||||
res2 = "read yourself please xD"
|
||||
print("challenge 2:" + "\n" + res2 + "\n")
|
||||
|
||||
Reference in new issue
Block a user