Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.67 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. def fill1():
  3.     return(capacity1)
  4. def fill2():
  5.     return(capacity2)
  6. def transfer_to1():
  7.     if (result2 > (capacity1 - result1)):
  8.         return(capacity1, result2 - (capacity1 - result1))
  9.     else:
  10.         return(result1 + result2, 0)
  11. def transfer_to2():
  12.     if result1 > capacity2 - result2:
  13.         return (result1 - (capacity2 - result2), capacity2)
  14.     else:
  15.         return (0, result1 + result2)
  16. def empty1():
  17.     return(0)
  18. def empty2():
  19.     return(0)
  20. result1 = 0
  21. result2 = 0
  22. capacity1 = int(input("Введите вместимость первого кувшина в литрах: "))
  23. capacity2 = int(input("Введите вместимость второго кувшина в литрах: "))
  24. volume = int(input("Введите объём воды, который требуется получить: "))
  25. if (capacity1 < capacity2):
  26.     if (((capacity2 % capacity1) == 0) and ((volume % capacity1) != 0)):
  27.       print("Для входных данных задачу решить невомзожно")
  28.       raise SystemExit(0)
  29.     else:pass
  30. elif (capacity1 > capacity2):
  31.     if (((capacity1 % capacity2) == 0) and ((volume % capacity2) != 0)):
  32.         print("Для входных данных задачу решить невомзожно")
  33.         raise SystemExit(0)
  34.     else:pass
  35. else:pass
  36. if ((volume > (capacity1 + capacity2))
  37. or (((capacity1 % 2) == 0) and ((capacity2 % 2) == 0) and ((volume % 2) == 1))
  38. or ((capacity1 == capacity2) and (volume != capacity1) and (volume != (capacity1 + capacity2)))
  39. or (((capacity1 % 5) == 0) and ((capacity2 % 5) == 0) and ((volume % 5) != 0))):
  40.     print("Для входных данных задачу решить невомзожно")
  41.     raise SystemExit(0)
  42. elif (volume == capacity1):
  43.     result1 = fill1()
  44.     print ("fill #1:", result1, result2)
  45.     raise SystemExit(0)
  46. elif (volume == capacity2):
  47.     result2 = fill2()
  48.     print ("fill #2:", result1, result2)
  49.     raise SystemExit(0)
  50. elif (volume == (capacity1+capacity2)):
  51.     result1 = fill1()
  52.     print ("fill #1:", result1, result2)
  53.     result2 = fill2()
  54.     print ("fill #2:", result1, result2)
  55.     raise SystemExit(0)
  56. elif (((volume % capacity1) == 0) and (capacity1 < capacity2)):
  57.     result1 = fill1()
  58.     print("fill #1:", result1, result2)
  59.     while ((result1+result2) != volume):
  60.         result1, result2 = transfer_to2()
  61.         print("transfer #1 -> #2:", result1, result2)
  62.         result1 = fill1()
  63.         print("fill #1:", result1, result2)
  64.     raise SystemExit(0)
  65. elif (((volume % capacity2) == 0) and (capacity1 > capacity2)):
  66.     result2 = fill2()
  67.     print("fill #2:", result1, result2)
  68.     while (((result1 + result2) != volume)):
  69.         result1, result2 = transfer_to1()
  70.         print("transfer #2 -> #1:", result1, result2)
  71.         result2 = fill2()
  72.         print("fill #2:", result1, result2)
  73.     raise SystemExit(0)
  74. else:
  75.     if (capacity1 < capacity2):
  76.         result2 = fill2()
  77.         print ("fill #2:", result1, result2)
  78.         result1, result2 = transfer_to1()
  79.         print ("transfer #2 -> #1:", result1, result2)
  80.         while (((result1 + result2) % capacity1) != 0):
  81.             while (result2 != 0):
  82.                 result1 = empty1()
  83.                 print("empty #1:", result1, result2)
  84.                 if ((result1 + result2) == volume):
  85.                     raise SystemExit(0)
  86.                 else: pass
  87.                 result1, result2 = transfer_to1()
  88.                 print("transfer #2 -> #1", result1, result2)
  89.             result2 = fill2()
  90.             print ("fill #2:", result1, result2)
  91.             if ((result1 + result2) == volume):
  92.                 raise SystemExit(0)
  93.             else: pass
  94.             result1, result2 = transfer_to1()
  95.             print("transfer #2 -> #1:", result1, result2)
  96.     else:
  97.         result1 = fill1()
  98.         print ("fill #1:", result1, result2)
  99.         result1, result2 = transfer_to2()
  100.         print ("transfer #1 -> #2:", result1, result2)
  101.         while (((result1 + result2) % capacity2) != 0):
  102.             while (result1 != 0):
  103.                 result2 = empty2()
  104.                 print("empty #2:", result1, result2)
  105.                 if ((result1 + result2) == volume):
  106.                     raise SystemExit(0)
  107.                 else: pass
  108.                 result1, result2 = transfer_to2()
  109.                 print("transfer #1 -> #2", result1, result2)
  110.             result1 = fill1()
  111.             print ("fill #1:", result1, result2)
  112.             if ((result1 + result2) == volume):
  113.                 raise SystemExit(0)
  114.             else: pass
  115.             result1, result2 = transfer_to2()
  116.             print("transfer #1 -> #2:", result1, result2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement