Advertisement
Iam_Sandeep

Untitled

Sep 11th, 2021
940
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.23 KB | None | 0 0
  1. from copy import deepcopy
  2. def find(x,cap,all_states):
  3.     current=set()
  4.     for i in range(3):
  5.         for j in range(3):
  6.             if i==j:
  7.                 continue
  8.             new_state=deepcopy(list(x))
  9.             temp=cap[i]-x[i]
  10.             if temp<=x[j]:
  11.                 new_state[i]=cap[i]
  12.                 new_state[j]-=temp
  13.             else:
  14.                 if new_state[i]+new_state[j]<=cap[i]:
  15.                     new_state[i]=new_state[i]+new_state[j]
  16.                     new_state[j]=0
  17.             new_state=tuple(new_state)
  18.             if new_state not in all_states:
  19.                 current.add(new_state)
  20.     return current
  21. def display(current,common,current_measures,index):
  22.     print(str(index).center(10),end=":")
  23.     t=""
  24.     for i in current_measures:
  25.         t+=str(i)
  26.         t+=","
  27.     print(t.center(25),end="")
  28.     print(":",end="")
  29.     for i in current:
  30.         if i in common:
  31.             print(i,"p2",end=" ")
  32.         else:
  33.             print(i,end=" ")
  34.     print()
  35. def make(given_state,index,cap,all_states,whole):
  36.     common=set()
  37.     current=set()
  38.     current_measures=set()
  39.     for each in given_state:
  40.         t=find(each,cap,all_states)
  41.         common=current.intersection(t)
  42.         current=current.union(t)
  43.     for each in current:
  44.         for val in each:
  45.             if val not in whole:
  46.                 current_measures.add(val)
  47.     display(current,common,current_measures,index)
  48.     whole=whole.union(current_measures)
  49.     all_states=all_states.union(current)
  50.     if current:
  51.         make(current,index+1,cap,all_states,whole)
  52.  
  53. def prepare(x,cap):
  54.     all_states=set()
  55.     whole=set()
  56.     for i in x:
  57.         whole.add(i)
  58.     all_states.add(x)
  59.     print("step".center(10),end=" ")
  60.     print("New Measurements".center(25),end=" ")
  61.     print("New States".center(10))
  62.     print("-"*80)
  63.     print("0".center(10),end="")
  64.     print(":",end="")
  65.     initial=""
  66.     for i in whole:
  67.         initial+=str(i)
  68.         initial+=","
  69.     print(initial.center(25),end="")
  70.     print(":",end="")
  71.     print(x)
  72.     make([x],1,cap,all_states,whole)
  73. prepare((0,0,11),(3,5,11))
  74. prepare((0,0,13),(3,5,13))
  75. prepare((0,0,17),(3,5,17))
  76. prepare((0,0,19),(3,5,19))
  77. prepare((0,0,23),(3,5,23))
  78.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement