Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from copy import deepcopy
- def find(x,cap,all_states):
- current=set()
- for i in range(3):
- for j in range(3):
- if i==j:
- continue
- new_state=deepcopy(list(x))
- temp=cap[i]-x[i]
- if temp<=x[j]:
- new_state[i]=cap[i]
- new_state[j]-=temp
- else:
- if new_state[i]+new_state[j]<=cap[i]:
- new_state[i]=new_state[i]+new_state[j]
- new_state[j]=0
- new_state=tuple(new_state)
- if new_state not in all_states:
- current.add(new_state)
- return current
- def display(current,common,current_measures,index):
- print(str(index).center(10),end=":")
- t=""
- for i in current_measures:
- t+=str(i)
- t+=","
- print(t.center(25),end="")
- print(":",end="")
- for i in current:
- if i in common:
- print(i,"p2",end=" ")
- else:
- print(i,end=" ")
- print()
- def make(given_state,index,cap,all_states,whole):
- common=set()
- current=set()
- current_measures=set()
- for each in given_state:
- t=find(each,cap,all_states)
- common=current.intersection(t)
- current=current.union(t)
- for each in current:
- for val in each:
- if val not in whole:
- current_measures.add(val)
- display(current,common,current_measures,index)
- whole=whole.union(current_measures)
- all_states=all_states.union(current)
- if current:
- make(current,index+1,cap,all_states,whole)
- def prepare(x,cap):
- all_states=set()
- whole=set()
- for i in x:
- whole.add(i)
- all_states.add(x)
- print("step".center(10),end=" ")
- print("New Measurements".center(25),end=" ")
- print("New States".center(10))
- print("-"*80)
- print("0".center(10),end="")
- print(":",end="")
- initial=""
- for i in whole:
- initial+=str(i)
- initial+=","
- print(initial.center(25),end="")
- print(":",end="")
- print(x)
- make([x],1,cap,all_states,whole)
- prepare((0,0,11),(3,5,11))
- prepare((0,0,13),(3,5,13))
- prepare((0,0,17),(3,5,17))
- prepare((0,0,19),(3,5,19))
- prepare((0,0,23),(3,5,23))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement