fork download
  1. # you can write to stdout for debugging purposes, e.g.
  2. # print "this is a debug message"
  3.  
  4. def solution(S):
  5. inputList = S.split()
  6. inputList = inputList[::-1]
  7. currentInput = ""
  8. resultList = []
  9. while inputList:
  10. currentInput = inputList.pop()
  11. if currentInput == "POP":
  12. if resultList: #if not empty
  13. resultList.pop()
  14. #print(resultList)
  15. else:
  16. return -1
  17. elif currentInput == "DUP":
  18. if resultList:
  19. resultList.append(resultList[-1])
  20. #print(resultList)
  21.  
  22. elif currentInput == "+":
  23. if len(resultList) < 2:
  24. return -1
  25.  
  26.  
  27. sum = resultList[-1] + resultList[-2]
  28. if sum > (2**20) - 1:
  29. return -1
  30. else:
  31. resultList.pop()
  32. resultList.pop()
  33. resultList.append(sum)
  34. #print(resultList)
  35.  
  36. elif currentInput == "-":
  37. if len(resultList) < 2:
  38. return -1
  39.  
  40. diff = resultList[-1] - resultList[-2]
  41. if diff < 0:
  42. return -1
  43. else:
  44. resultList.pop()
  45. resultList.pop()
  46. resultList.append(diff)
  47. #print(resultList)
  48.  
  49. elif currentInput.isdigit():
  50. n = int(currentInput)
  51. if not(0 <= n and n <= (2**20 -1)):
  52. return -1
  53. resultList.append(n)
  54. #print(resultList)
  55.  
  56.  
  57. if not resultList:
  58. return -1
  59. else:
  60. #print(resultList)
  61. return resultList[-1]
  62.  
  63. print(solution("3 -"))
  64. print (solution('13 DUP 4 POP 5 DUP + DUP + -'))
  65. print (solution('4 5 6 - 7 +'))
Success #stdin #stdout 0.01s 7244KB
stdin
Standard input is empty
stdout
-1
7
8