Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.99 KB | None | 0 0
  1. class obj(object):
  2. def __init__(self,name,on,heavierThan):
  3. self.name = name
  4. self.setState(on,heavierThan)
  5. print("Object created with name '",self.name,"'.")
  6. def setState(self,on,heavierThan):
  7. #On = what object is on top of it
  8. self.on = on
  9. self.heavierThan = heavierThan
  10.  
  11. def getItemsFromString(string):
  12. arr = []
  13. word = ""
  14. for i in range(len(string)):
  15. if string[i] == " ":
  16. arr.append(word)
  17. word = ""
  18. elif i == len(string)-1:
  19. word += string[i]
  20. finalWord = word.replace(" ","")
  21. #print("appending last word to list. The word is:", word)
  22. arr.append(finalWord)
  23. else:
  24. word += string[i]
  25. return arr
  26.  
  27. def getOneParameter(command):
  28. started = False
  29. finished = False
  30. parameter = ""
  31. for letter in command:
  32. if letter == "(" and not started:
  33. started = True
  34. elif letter == ")" and started and not finished:
  35. finished = True
  36. return parameter
  37. elif started and not finished:
  38. parameter += letter
  39.  
  40. def getTwoParameters(command):
  41. started1 = False
  42. finished1 = False
  43. started2 = False
  44. finsihed2 = False
  45. parameter = ""
  46. parameters = []
  47. for letter in command:
  48. if letter == "(":
  49. started1 = True
  50. elif letter == ",":
  51. finished1 = True
  52. started2 = True
  53. parameters.append(parameter)
  54. parameter = ""
  55. elif letter == ")":
  56. finished2 = True
  57. parameters.append(parameter)
  58. return parameters
  59. elif (started1 and not finished1) or (started2 and not finsihed2):
  60. parameter += letter
  61.  
  62. def getObjectsFromNames(arr):
  63. objArr = []
  64. for i in range(len(arr)):
  65. objArr.append(obj(arr[i],None,None))
  66. return objArr
  67.  
  68. def setInitialState(arr):
  69. #First iterate to find the commands and shove them in a tuple
  70. commands = []
  71. command = ""
  72. for i in range(len(arr)):
  73. wordFinished = False
  74. for letter in arr[i]:
  75. if letter == "(":
  76. commands.append(command)
  77. command = ""
  78. wordFinished = True
  79. elif not wordFinished:
  80. command += letter
  81. #print("The commands entered are:",commands)
  82. for i in range(len(commands)):
  83. if commands[i] == "ON":
  84. paramStrings = getTwoParameters(arr[i])
  85. params = []
  86. for i in range(len(objects)):
  87. if paramStrings[0] == objects[i].name:
  88. params.append(objects[i])
  89. for i in range(len(objects)):
  90. if paramStrings[1] == objects[i].name:
  91. params.append(objects[i])
  92. params[1].on = params[0].name
  93. elif commands[i] == "HEAVIER":
  94. params = []
  95. paramStrings = getTwoParameters(arr[i])
  96. for i in range(len(objects)):
  97. if paramStrings[0] == objects[i].name:
  98. params.append(objects[i])
  99. for i in range(len(objects)):
  100. if paramStrings[1] == objects[i].name:
  101. params.append(objects[i])
  102. params[0].heavierThan = params[1].name
  103.  
  104. #print("The parameters are: ",params)
  105. elif commands[i] == "CLEAR":
  106. paramString = getOneParameter(arr[i])
  107. for i in range(len(objects)):
  108. if paramString == objects[i].name:
  109. param = objects[i]
  110. param.on = None
  111. #print("The lone parameter is:", param)
  112.  
  113.  
  114. def move(x,y,z):
  115. #check if preconditions are true
  116. if y.on == x.name and z.on == None and x.on == None and z.heavierThan == x.name:
  117. print("preconditions are true!")
  118. z.on = x.name
  119. y.on = None
  120.  
  121. def printState():
  122. for i in range(len(objects)):
  123. print("Name:",objects[i].name,"| Object on top of it:",objects[i].on,"| Heavier than:",objects[i].heavierThan)
  124.  
  125. #Actual Program begins here -------------------------------------------------------------------------------------------------------
  126. #objNames = getItemsFromString(input("Enter the objects in the Toy World as words separated by a space:"))
  127. #stateRaw = getItemsFromString(input("Enter the state the objects are in, using the format 'Command(x,y):"))
  128. objNames = getItemsFromString("A table2 table1")
  129. stateRaw = getItemsFromString("ON(A,table1) HEAVIER(table1,A) HEAVIER(table2,A) CLEAR(A) CLEAR(table2)")
  130. goalStateRaw = getItemsFromString("CLEAR(table1) CLEAR(A)")
  131.  
  132. objects = getObjectsFromNames(objNames);
  133. setInitialState(stateRaw)
  134. print("The object names are:",objNames)
  135. print("The initial raw state is:", stateRaw)
  136. print("The objects are:")
  137. printState()
  138. print("attempting to move A from table1 to table2...")
  139. move(objects[0],objects[2],objects[1])
  140. printState()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement