def func(): # !! step2: change function name s = Solution() myFuncLis = [ s.closestValue, # optional: add another function for comparison ] onlyDisplayError = True enableInput = [True] * testCaseCnt input = [None] * testCaseCnt expectedRlt = [None] * testCaseCnt # enableInput[0] = False # enableInput[1] = False # enableInput[2] = False # enableInput[3] = False # enableInput[4] = False # enableInput[5] = False # !! step3: change input para, input para can be found in "run code" - "test case" # ! para1 input[0] = ( binaryTree.buildTree([4, 2, 5, 1, 3]), 3.714286, # singleLinkedList.buildSingleList(None) # nTree.buildTree(None) ) expectedRlt[0] = None # ! para2 input[1] = ( None # binaryTree.buildTree(None), # singleLinkedList.buildSingleList(None), # nTree.buildTree(None), ) expectedRlt[1] = None # ! para3 input[2] = ( None # singleLinkedList.buildSingleList(None), # binaryTree.buildTree(None), # nTree.buildTree(None), ) expectedRlt[2] = None # ! para4 input[3] = ( None # singleLinkedList.buildSingleList(None), # binaryTree.buildTree(None), # nTree.buildTree(None), ) expectedRlt[3] = None # ! para5 input[4] = ( None # singleLinkedList.buildSingleList(None), # binaryTree.buildTree(None), # nTree.buildTree(None), ) expectedRlt[4] = None # ! para6 input[5] = ( None # singleLinkedList.buildSingleList(None), # binaryTree.buildTree(None), # nTree.buildTree(None), ) expectedRlt[5] = None # !! ==================================== # function and parameters count allInput = [(input[i], enableInput[i], expectedRlt[i]) for i in range(testCaseCnt)] if not input[0]: print("ERROR: please assign at least one input for input[0]!") exit() funcParaCnt = 1 if not isinstance(input[0], tuple) else len(input[0]) funcCnt = len(myFuncLis) # for each test case for inputPara, enableInput, expectedRlt in allInput: if not enableInput or not inputPara: continue inputParaList = [None] * funcParaCnt if not isinstance(inputPara, tuple): inputPara = [inputPara] for j in range(funcParaCnt): inputParaList[j] = inputPara[j] # for each function for j in range(funcCnt): print('==' * 20) myFunc = myFuncLis[j] # ! manually call function, max para count: 8 rlt = None if funcParaCnt == 1: rlt = myFunc(inputPara[0]) if funcParaCnt == 2: rlt = myFunc(inputPara[0], inputPara[1]) if funcParaCnt == 3: rlt = myFunc(inputPara[0], inputPara[1], inputPara[2]) if funcParaCnt == 4: rlt = myFunc(inputPara[0], inputPara[1], inputPara[2], inputPara[3]) if funcParaCnt == 5: rlt = myFunc(inputPara[0], inputPara[1], inputPara[2], inputPara[3], inputPara[4]) if funcParaCnt == 6: rlt = myFunc(inputPara[0], inputPara[1], inputPara[2], inputPara[3], inputPara[4], inputPara[5]) if funcParaCnt == 7: rlt = myFunc(inputPara[0], inputPara[1], inputPara[2], inputPara[3], inputPara[4], inputPara[5], inputPara[6]) if funcParaCnt == 8: rlt = myFunc(inputPara[0], inputPara[1], inputPara[2], inputPara[3], inputPara[4], inputPara[5], inputPara[6], inputPara[7]) # only output when the result is not expected if onlyDisplayError and expectedRlt is not None and expectedRlt == rlt: continue # output function name if funcCnt > 1: print('func: \t%s' % myFunc.__name__) # output para for k in range(funcParaCnt): para = inputParaList[k] if para: formatPrint('input %s:' % (k + 1), para) else: print(para) # output result print() if not rlt: print('rlt:\t', rlt) else: formatPrint('rlt:', rlt) if expectedRlt is not None: if not expectedRlt: print('expRlt:\t', expectedRlt) else: formatPrint('expRlt:', expectedRlt) print('==' * 20)
def func(): # !! step2: change function name s = Solution() myFuncLis = [ s.levelOrderBottom, ] onlyDisplayError = True enableInput1 = True enableInput2 = True enableInput3 = True enableInput4 = True enableInput5 = True enableInput6 = True # !! step3: change input para, input para can be found in "run code" - "test case" # ! para1 input1 = ( binaryTree.buildTree([3, 9, 20, null, null, 15, 7]) # TODO # singleLinkedList.buildSingleList(None) # nTree.buildTree(None) ) expectedRlt1 = None # ! para2 input2 = ( # binaryTree.buildTree(None), None # singleLinkedList.buildSingleList(None), # nTree.buildTree(None), ) expectedRlt2 = None # ! para3 input3 = ( None # singleLinkedList.buildSingleList(None), # binaryTree.buildTree(None), # nTree.buildTree(None), ) expectedRlt3 = None # ! para4 input4 = ( None # singleLinkedList.buildSingleList(None), # binaryTree.buildTree(None), # nTree.buildTree(None), ) expectedRlt4 = None # ! para5 input5 = ( None # singleLinkedList.buildSingleList(None), # binaryTree.buildTree(None), # nTree.buildTree(None), ) expectedRlt5 = None # ! para6 input6 = ( None # singleLinkedList.buildSingleList(None), # binaryTree.buildTree(None), # nTree.buildTree(None), ) expectedRlt6 = None # !! ==================================== # instances that need an extra empty line specialTypeLis = [TreeNode, Node] # function and parameters count allInput = [ (input1, enableInput1, expectedRlt1), (input2, enableInput2, expectedRlt2), (input3, enableInput3, expectedRlt3), (input4, enableInput4, expectedRlt4), (input5, enableInput5, expectedRlt5), (input6, enableInput6, expectedRlt6), ] if not input1 and not input2: print("ERROR: please assign at least one input for input1 or input2!") exit() funcParaCnt = 1 if not isinstance(input1, tuple) else len(input1) funcCnt = len(myFuncLis) # for each input set for inputPara, enableInput, expectedRlt in allInput: if not enableInput or not inputPara: continue inputPara1 = inputPara if not isinstance(inputPara, tuple) else inputPara[0] para1Splitter = '\n' if isOneInstance(inputPara1, specialTypeLis) else '\t' inputPara2 = None para2Splitter = None inputPara3 = None para3Splitter = None inputPara4 = None para4Splitter = None # start a new line if the parameter is a tree if funcParaCnt >= 2: inputPara2 = inputPara[1] para2Splitter = '\n' if isOneInstance(inputPara2, specialTypeLis) else '\t' if funcParaCnt >= 3: inputPara3 = inputPara[2] para3Splitter = '\n' if isOneInstance(inputPara3, specialTypeLis) else '\t' if funcParaCnt >= 4: inputPara4 = inputPara[3] para4Splitter = '\n' if isOneInstance(inputPara4, specialTypeLis) else '\t' # for each function for j in range(funcCnt): print('==' * 20) myFunc = myFuncLis[j] # print('func: \t%s' % myFunc.__name__) # output parameters rlt = None if funcParaCnt == 1: rlt = myFunc(inputPara1) if onlyDisplayError and expectedRlt is not None and expectedRlt == rlt: continue print('input1:%s%s' % (para1Splitter, inputPara1)) if funcParaCnt == 2: rlt = myFunc(inputPara1, inputPara2) if onlyDisplayError and expectedRlt is not None and expectedRlt == rlt: continue print('input1:%s%s' % (para1Splitter, inputPara1)) print('input2:%s%s' % (para2Splitter, inputPara2)) if funcParaCnt == 3: rlt = myFunc(inputPara1, inputPara2, inputPara3) if onlyDisplayError and expectedRlt is not None and expectedRlt == rlt: continue print('input1:%s%s' % (para1Splitter, inputPara1)) print('input2:%s%s' % (para2Splitter, inputPara2)) print('input3:%s%s' % (para3Splitter, inputPara3)) if funcParaCnt == 4: rlt = myFunc(inputPara1, inputPara2, inputPara3, inputPara4) if onlyDisplayError and expectedRlt is not None and expectedRlt == rlt: continue print('input1:%s%s' % (para1Splitter, inputPara1)) print('input2:%s%s' % (para2Splitter, inputPara2)) print('input3:%s%s' % (para3Splitter, inputPara3)) print('input4:%s%s' % (para4Splitter, inputPara4)) # output result rltSplitter = '\n' if isOneInstance(rlt, specialTypeLis) else '\t' print('rlt:%s%s' % (rltSplitter, rlt)) if expectedRlt is not None: print('expRlt:%s%s' % (rltSplitter, expectedRlt)) # print('==' * 20) print('==' * 20)
def func(): s = Solution() # !! change function name and para here myFuncLis = [ s.maxDepth, ] inputParaLis1 = [ binaryTree.buildTree([3, 9, 20, None, None, 15, 7]), ] inputParaLis2 = [ None, ] inputParaLis3 = [ None, ] # !! ==================================== # ! function and parameters count inputSetCnt = len(inputParaLis1) funcCnt = len(myFuncLis) funcParaCnt = 1 if not inputParaLis3[0] is None: funcParaCnt = 3 elif not inputParaLis2[0] is None: funcParaCnt = 2 # ! for each input set for i in range(inputSetCnt): inputPara1 = inputParaLis1[i] para1Splitter = '\n' if isinstance(inputPara1, TreeNode) else '\t' inputPara2 = None para2Splitter = None inputPara3 = None para3Splitter = None # ! start a new line if the parameter is a tree if funcParaCnt >= 2: inputPara2 = inputParaLis2[i] para2Splitter = '\n' if isinstance(inputPara2, TreeNode) else '\t' if funcParaCnt >= 3: inputPara3 = inputParaLis3[i] para3Splitter = '\n' if isinstance(para3Splitter, TreeNode) else '\t' # ! for each function for j in range(funcCnt): myFunc = myFuncLis[j] print('func: \t%s' % myFunc.__name__) # ! output parameters if funcParaCnt == 1: print('input1:%s%s' % (para1Splitter, inputPara1)) rlt = myFunc(inputPara1) if funcParaCnt == 2: print('input1:%s%s' % (para1Splitter, inputPara1)) print('input2:%s%s' % (para2Splitter, inputPara2)) rlt = myFunc(inputPara1, inputPara2) if funcParaCnt == 3: print('input1:%s%s' % (para1Splitter, inputPara1)) print('input2:%s%s' % (para2Splitter, inputPara2)) print('input3:%s%s' % (para3Splitter, inputPara3)) rlt = myFunc(inputPara1, inputPara2, inputPara3) # ! output result rltSplitter = '\n' if isinstance(rlt, TreeNode) else '\t' print('rlt:%s%s' % (rltSplitter, rlt)) print('==' * 20)
def func(): s = Solution() # !! change function name and para here myFuncLis = [ s.preorderTraversal, ] inputParaLis1 = [ binaryTree.buildTree([1, null, 2, 3]), # singleLinkedList.buildSingleList([]) # binaryTree.buildTree([]) # nTree.buildTree([]) ] inputParaLis2 = [ None, ] inputParaLis3 = [ None, ] # !! ==================================== # ! instances that need an empty line specialTypeLis = [TreeNode, Node] # ! function and parameters count inputSetCnt = len(inputParaLis1) funcCnt = len(myFuncLis) funcParaCnt = 1 if not inputParaLis3[0] is None: funcParaCnt = 3 elif not inputParaLis2[0] is None: funcParaCnt = 2 # ! for each input set for i in range(inputSetCnt): inputPara1 = inputParaLis1[i] para1Splitter = '\n' if isOneInstance(inputPara1, specialTypeLis) else '\t' inputPara2 = None para2Splitter = None inputPara3 = None para3Splitter = None # ! start a new line if the parameter is a tree if funcParaCnt >= 2: inputPara2 = inputParaLis2[i] para2Splitter = '\n' if isOneInstance(inputPara2, specialTypeLis) else '\t' if funcParaCnt >= 3: inputPara3 = inputParaLis3[i] para3Splitter = '\n' if isOneInstance(para3Splitter, specialTypeLis) else '\t' # ! for each function for j in range(funcCnt): myFunc = myFuncLis[j] print('func: \t%s' % myFunc.__name__) # ! output parameters if funcParaCnt == 1: print('input1:%s%s' % (para1Splitter, inputPara1)) rlt = myFunc(inputPara1) if funcParaCnt == 2: print('input1:%s%s' % (para1Splitter, inputPara1)) print('input2:%s%s' % (para2Splitter, inputPara2)) rlt = myFunc(inputPara1, inputPara2) if funcParaCnt == 3: print('input1:%s%s' % (para1Splitter, inputPara1)) print('input2:%s%s' % (para2Splitter, inputPara2)) print('input3:%s%s' % (para3Splitter, inputPara3)) rlt = myFunc(inputPara1, inputPara2, inputPara3) # ! output result rltSplitter = '\n' if isinstance(rlt, TreeNode) else '\t' print('rlt:%s%s' % (rltSplitter, rlt)) print('==' * 20)
def func(): s = Solution() # !! change function name and para here myFuncLis = [ s.invertTree, ] inputParaLis1 = [ binaryTree.buildTree([4, 2, 7, 1, 3, 6, 9]), ] inputParaLis2 = [ None, ] inputParaLis3 = [ None, ] inputSetCnt = len(inputParaLis1) funcCnt = len(myFuncLis) funcParaCnt = 1 if not inputParaLis3[0] is None: funcParaCnt = 3 elif not inputParaLis2[0] is None: funcParaCnt = 2 for i in range(inputSetCnt): inputPara1 = inputParaLis1[i] para1Splitter = '\n' if isinstance(inputPara1, TreeNode) else '\t' inputPara2 = None para2Splitter = None inputPara3 = None para3Splitter = None if funcParaCnt >= 2: inputPara2 = inputParaLis2[i] para2Splitter = '\n' if isinstance(inputPara2, TreeNode) else '\t' if funcParaCnt >= 3: inputPara3 = inputParaLis3[i] para3Splitter = '\n' if isinstance(para3Splitter, TreeNode) else '\t' for j in range(funcCnt): myFunc = myFuncLis[j] print('func: \t%s' % myFunc.__name__) if funcParaCnt == 1: print('input1:%s%s' % (para1Splitter, inputPara1)) rlt = myFunc(inputPara1) if funcParaCnt == 2: print('input1:%s%s' % (para1Splitter, inputPara1)) print('input2:%s%s' % (para2Splitter, inputPara2)) rlt = myFunc(inputPara1, inputPara2) if funcParaCnt == 3: print('input1:%s%s' % (para1Splitter, inputPara1)) print('input2:%s%s' % (para2Splitter, inputPara2)) print('input3:%s%s' % (para3Splitter, inputPara3)) rlt = myFunc(inputPara1, inputPara2, inputPara3) rltSplitter = '\n' if isinstance(rlt, TreeNode) else '\t' print('rlt:%s%s' % (rltSplitter, rlt)) print('==' * 20)