Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def check(t, depth, myrange):
- #print('checking ' + str(t))
- #print (' depth = ' + str(depth))
- if t is None:
- return True
- left_range_list = []
- if not check(t[0],depth+1,left_range_list):
- return False
- right_range_list = []
- if not check(t[2],depth+1,right_range_list):
- return False
- myrange.append([t[1],t[1]])
- for i in range(max(len(left_range_list),len(right_range_list))):
- if i < len(left_range_list):
- left_range = left_range_list[i]
- else:
- left_range = None
- if i < len(right_range_list):
- right_range = right_range_list[i]
- else:
- right_range = None
- if left_range is None:
- myrange.append(right_range)
- elif right_range is None:
- myrange.append(left_range)
- else:
- range_evenness = (i+depth+1)%2
- #print('merging ' + str(left_range) + ' with ' + str(right_range) + ' at ' + str(range_evenness) + ' evenness')
- if left_range[1] == right_range[0] or \
- (left_range[1] > right_range[0]) != (range_evenness == 0):
- #print('left and right in wrong order')
- return False
- #print('merge ok')
- myrange.append([left_range[0],right_range[1]])
- return (depth % 2 != t[1] % 2)
- ranges = []
- print('check 1 = ' + str(check([[[None,9,None],2,[None,7,None]],1,[[None,5,None],4,[None,3,None]]],0,ranges)))
- print('ranges = ' + str(ranges))
- ranges = []
- print('check 2 = ' + str(check([[[None,9,None],2,[None,5,None]],1,[[None,7,None],4,[None,3,None]]],0,ranges)))
- print('ranges = ' + str(ranges))
- ranges = []
- print('check 3 = ' + str(check([[[None,9,None],2,[None,7,None]],1,[[None,5,None],4,None]],0,ranges)))
- print('ranges = ' + str(ranges))
- ranges = []
- print('check 4 = ' + str(check([[[None,9,None],2,[None,7,None]],1,[[None,5,None],5,[None,3,None]]],0,ranges)))
- print('ranges = ' + str(ranges))
RAW Paste Data