You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.9 KiB
73 lines
1.9 KiB
import sys |
|
|
|
check = True |
|
inpx = [] |
|
inpy = [] |
|
inp2 = [] |
|
|
|
with open(sys.argv[1]) as f: |
|
for i in f.readlines(): |
|
i = i.strip() |
|
if i == '': |
|
check = False |
|
continue |
|
if check: |
|
temp1, temp2 = i.split(',', 1) |
|
inpx.append(int(temp1)) |
|
inpy.append(int(temp2)) |
|
else: |
|
i = i.replace('fold along ', '') |
|
i = i.strip() |
|
temp1, temp2 = i.split('=', 1) |
|
inp2.append((temp1, int(temp2))) |
|
|
|
maxx = max(inpx) |
|
maxy = max(inpy) |
|
|
|
class grid: |
|
def __init__(self, maxx, maxy): |
|
self._points = [] |
|
|
|
for i in range(maxy + 1): |
|
self._points.append(['.'] * (maxx + 1)) |
|
|
|
def mark(self, x, y): |
|
self._points[y][x] = '#' |
|
|
|
def fold(self, axis, loca): |
|
if axis == 'y': |
|
for i in range(loca + 1, len(self._points)): |
|
for t in range(len(self._points[i])): |
|
if self._points[i][t] == '#': |
|
temp = i - loca |
|
self._points[loca -temp][t] = '#' |
|
del self._points[loca:len(self._points)] |
|
if axis == 'x': |
|
for i in range(len(self._points)): |
|
for t in range(loca + 1, len(self._points[i])): |
|
if self._points[i][t] == '#': |
|
temp = t - loca |
|
self._points[i][loca - temp] = '#' |
|
for f in self._points: |
|
del f[loca:len(f)] |
|
def count(self): |
|
counter = 0 |
|
for f in self._points: |
|
for g in f: |
|
if g == '#': |
|
counter += 1 |
|
return counter |
|
|
|
gri = grid(maxx, maxy) |
|
folds = 0 |
|
|
|
for i in range(len(inpx)): |
|
gri.mark(inpx[i], inpy[i]) |
|
|
|
for i in inp2: |
|
gri.fold(i[0], i[1]) |
|
folds += 1 |
|
print('Points after ', folds, 'fold(s):', gri.count()) |
|
|
|
for i in range(len(gri._points)): |
|
print(gri._points[i]) |