Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- N = int(input())
- trees = []
- for i in range(N):
- trees.append([int(i) for i in input().split()])
- def triangle(n, m):
- return ['.'*(n-1-i+m)+'#'*(i*2+1)+'.'*(n-1-i+m) for i in range(n)]
- def spruce(n,m):
- tree = []
- for i in range(n):
- tree += triangle(m+i,n-i-1)
- return tree
- def check_delta(tree1, tree2, delta):
- trees1 = ['.'*len(tree1[0])] + tree1 + ['.'*len(tree1[0])]
- trees2 = ['.'*len(tree2[0])] + tree2 + ['.'*len(tree1[0])]
- new_delta = delta
- for i in range(1, len(trees1)-1):
- delta_i = 0
- for x in trees1[i]:
- if x == '.':
- delta_i += 1
- else:
- delta_i = 0
- if delta_i <= new_delta:
- if trees2[i-1][new_delta-delta_i-1] == '#' or trees2[i+1][new_delta-delta_i-1] == '#':
- new_delta -= 1
- break
- return new_delta
- def delta(trees1, trees2):
- delta_min = len(trees1[0])
- for i in range(len(trees2)):
- delta_i = 0
- for x in trees1[i]:
- if x == '.':
- delta_i += 1
- else:
- delta_i = 0
- for x in trees2[i]:
- if x == '.':
- delta_i += 1
- else:
- break
- if delta_i < delta_min:
- delta_min = delta_i
- return delta_min
- def trees_join(trees1, trees2):
- if len(trees1) < len(trees2):
- trees1 += ['.'*len(trees1[0])]*(len(trees2)-len(trees1))
- delt = delta(trees1, trees2)
- if len(trees1) > len(trees2):
- trees2 += ['.'*len(trees2[0])]*(len(trees1)-len(trees2))
- delt = check_delta(trees1, trees2, delt)
- len_trees = len(trees1[0]) + len(trees2[0]) + 1 - delt
- new_tree = []
- for i in range(len(trees1)):
- delta_i = 0
- for x in trees1[i]:
- if x == '.':
- delta_i += 1
- else:
- delta_i = 0
- if delta_i == 0:
- tree_str = trees1[i]
- else:
- tree_str = trees1[i][:-delta_i]
- delta_i = 0
- for x in trees2[i]:
- if x == '.':
- delta_i += 1
- else:
- break
- new_tree.append(tree_str + '.'*(len_trees - len(tree_str) - len(trees2[i][delta_i:])) + trees2[i][delta_i:])
- return new_tree
- def print_trees(trees):
- for i in trees:
- print(i)
- drawn_trees = spruce(trees[0][0], trees[0][1])
- for i in range(1,N):
- tree = spruce(trees[i][0], trees[i][1])
- drawn_trees = trees_join(drawn_trees, tree)
- print_trees(drawn_trees)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement