def test(): R_in = _RQ(15, 2, 12) Q_in = _RQ(15, 3, 12) list_R2 = _R_recursion_2(R_in) list_R4 = _R_recursion_4(R_in) list_Q2 = _Q_recursion_2(Q_in) list_Q4 = _Q_recursion_4(Q_in) print_info() print_RQ(R_in, "R_IN") print_RQ(Q_in, "Q_IN") print("-------------------------") print("R") print("-------------------------") print("-------------------------") print("-- 1xQ") print_RQ(list_R2[0], "R2") print_RQ(list_R2[1], "Q2") print("-- 0xQ") print_RQ(list_R2[2], "R2") print("-------------------------") print("-- 3xQ") print_RQ(list_R4[0], "R4") print_RQ(list_R4[1], "Q4") print("-- 2xQ") print_RQ(list_R4[2], "R4") print_RQ(list_R4[3], "Q4") print("-- 1xQ") print_RQ(list_R4[4], "R4") print_RQ(list_R4[5], "Q4") print("-- 0xQ") print_RQ(list_R4[6], "R4") print("-------------------------") print("Q") print("-------------------------") print("-- 0xR") print_RQ(list_Q2[0], "Q2") print("-- 1xR") print_RQ(list_Q2[1], "Q2") print_RQ(list_Q2[2], "R2") print("-------------------------") print("-- 3xR") print_RQ(list_Q4[0], "Q4") print_RQ(list_Q4[1], "R4") print("-- 2xR") print_RQ(list_Q4[2], "Q4") print_RQ(list_Q4[3], "R4") print("-- 1xR") print_RQ(list_Q4[4], "Q4") print_RQ(list_Q4[5], "R4") print("-- 0xR") print_RQ(list_Q4[6], "Q4")
def _R_recursion_2(R_in): # # ---------------------------------------------------- start = R_in.start superscript = R_in.superscript end = R_in.end - (R_in.start-R_in.end + 1) R_out_1 = _RQ( start, superscript, end ) # # ---------------------------------------------------- start = R_in.start - R_in.superscript superscript = R_in.start - R_in.superscript - R_in.end - 1 end = R_in.end - R_in.superscript Q_out_1 = _RQ(start, superscript, end) # # ---------------------------------------------------- start = R_in.start superscript = R_in.start - ( R_in.end - 1 ) + R_in.superscript end = R_in.end - (R_in.start-R_in.end + 1) R_out_2 = _RQ( start, superscript, end ) R_out_1.name = "R2_1" Q_out_1.name = "Q_1" R_out_2.name = "R2_2" return [ R_out_1 , Q_out_1 , R_out_2]
def _Q_recursion_2(Q_in): # # ---------------------------------------------------- start = Q_in.start superscript = Q_in.start - (Q_in.end - 1) + Q_in.superscript end = Q_in.end - (Q_in.start - Q_in.end) Q_out_1 = _RQ(start, superscript, end) # ---------------------------------------------------- # ---------------------------------------------------- # ---------------------------------------------------- # # ---------------------------------------------------- # start = Q_in.start superscript = Q_in.superscript # end = Q_in.end - ( Q_in.start - Q_in.end ) Q_out_2 = _RQ(start, superscript, end) # # ---------------------------------------------------- start = Q_in.start - Q_in.superscript superscript = Q_in.start - (Q_in.end - 1) - Q_in.superscript end = Q_in.end - Q_in.superscript R_out_2 = _RQ(start, superscript, end) return [Q_out_1, Q_out_2, R_out_2]
def _R_recursion_4(R_in): start0 = R_in.start start1 = R_in.end - 1 start2 = R_in.end - 2 - (R_in.start - R_in.end) start3 = R_in.end - 3 - 2*(R_in.start - R_in.end) end0 = R_in.end end1 = start2 + 1 end2 = start3 + 1 end3 = start3 - (R_in.start - R_in.end) # # ---------------------------------------------------- start = start0 superscript = R_in.superscript end = end3 R_out_1 = _RQ( start, superscript, end ) # # ---------------------------------------------------- start = start0 - R_in.superscript superscript = start0 - R_in.superscript - start1 end = end0 - R_in.superscript Q_out_1 = _RQ( start, superscript, end ) # ---------------------------------------------------- # ---------------------------------------------------- # ---------------------------------------------------- # # ---------------------------------------------------- start = R_in.start superscript = start0 - start1 + R_in.superscript end = end3 R_out_2 = _RQ( start, superscript, end ) # # ---------------------------------------------------- start = start1 - R_in.superscript superscript = start1 - R_in.superscript - start3 end = end1 - R_in.superscript Q_out_2 = _RQ( start, superscript, end ) # ---------------------------------------------------- # ---------------------------------------------------- # ---------------------------------------------------- # # ---------------------------------------------------- start = start0 superscript = start0 - start2 + R_in.superscript end = end3 R_out_3 = _RQ( start, superscript, end ) # # ---------------------------------------------------- start = start2 - R_in.superscript superscript = start2 - R_in.superscript - end2 end = end1 - R_in.superscript Q_out_3 = _RQ( start, superscript, end ) # ---------------------------------------------------- # ---------------------------------------------------- # ---------------------------------------------------- # # ---------------------------------------------------- start = start0 superscript = start0 - start3 + R_in.superscript end = end3 R_out_4 = _RQ( start, superscript, end ) # ---------------------------------------------------- # ---------------------------------------------------- # ---------------------------------------------------- R_out_1.name = "R4_1" Q_out_1.name = "Q_1" R_out_2.name = "R4_2" Q_out_2.name = "Q_2" R_out_3.name = "R4_3" Q_out_3.name = "Q_3" R_out_4.name = "R4_4" return [ R_out_1 , Q_out_1 , R_out_2 , Q_out_2 , R_out_3 , Q_out_3 , R_out_4]
# TEST def print_RQ(in_RQ): print(in_RQ.name.ljust(5)+"{"+str(in_RQ.start)+","+str(in_RQ.superscript)+","+str(in_RQ.end)+"}") R_in = _RQ( int(sys.argv[1]) , int(sys.argv[2]) , int(sys.argv[3]) ) if int(sys.argv[4]) == 4: # RECURSION - 4 list_R4 = _R_recursion_4(R_in) for x in list_R4: print_RQ(x) else: list_R2 = _R_recursion_2(R_in) for x in list_R2: print_RQ(x)
def _Q_recursion_4(Q_in): start0 = Q_in.start start1 = Q_in.end - 1 start2 = Q_in.end - 2 - (Q_in.start - Q_in.end) start3 = Q_in.end - 3 - 2 * (Q_in.start - Q_in.end) end0 = Q_in.end end1 = start2 + 1 end2 = start3 + 1 end3 = start3 - (Q_in.start - Q_in.end) # # ---------------------------------------------------- start = Q_in.start superscript = Q_in.superscript end = end3 Q_out_1 = _RQ(start, superscript, end) # # ---------------------------------------------------- start = start0 - Q_in.superscript superscript = start0 - start1 - Q_in.superscript end = end0 - -Q_in.superscript R_out_1 = _RQ(start, superscript, end) # ---------------------------------------------------- # ---------------------------------------------------- # ---------------------------------------------------- # # ---------------------------------------------------- start = Q_in.start superscript = start0 - start1 + Q_in.superscript end = end3 Q_out_2 = _RQ(start, superscript, end) # # ---------------------------------------------------- start = start1 - Q_in.superscript superscript = start1 - Q_in.superscript - start2 end = end1 - Q_in.superscript R_out_2 = _RQ(start, superscript, end) # ---------------------------------------------------- # ---------------------------------------------------- # ---------------------------------------------------- # # ---------------------------------------------------- start = Q_in.start superscript = start0 - start2 + Q_in.superscript end = end3 Q_out_3 = _RQ(start, superscript, end) # # ---------------------------------------------------- start = start2 - Q_in.superscript superscript = start2 - Q_in.superscript - start3 end = end2 - Q_in.superscript R_out_3 = _RQ(start, superscript, end) # ---------------------------------------------------- # ---------------------------------------------------- # ---------------------------------------------------- # # ---------------------------------------------------- start = Q_in.start superscript = start0 - start3 + Q_in.superscript end = end3 Q_out_4 = _RQ(start, superscript, end) return [Q_out_1, R_out_1, Q_out_2, R_out_2, Q_out_3, R_out_3, Q_out_4]