Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def A(z,a):
- if len(a)<3:
- a=[0,1,1]
- n=3
- print(0,0,"( 1 x )","0")
- print(1,1,"( 1 x )","0+1")
- print(2,1,"( 1 x )","1+1")
- else:
- n=len(a)
- an=2
- while n<=z:
- list1=[]
- list2=[]
- list1.append(a[n-an])
- list2.append(0)
- nn=an-2
- while nn>0:
- l=len(list1)
- i=0
- while i<l:
- v=list1[0]
- sg=list2[0]
- list2.pop(list1.index(v))
- list1.remove(v)
- list1.append(v+a[n-nn-1])
- list2.append(sg*10+1)
- if v-n<300: ## speed optimization, should be safe
- list1.append(v*a[n-nn-1])
- list2.append(sg*10+2)
- list1.append(v-a[n-nn-1])
- list2.append(sg*10+3)
- i=i+1
- nn=nn-1
- c=list1.count(n-an-a[n-1])+list1.count(n/an-a[n-1])+list1.count(n+an-a[n-1])
- c=c+list1.count((n-an)/a[n-1])+list1.count((n/an)/a[n-1])+list1.count((n+an)/a[n-1])
- c=c+list1.count(n-an+a[n-1])+list1.count(n/an+a[n-1])+list1.count(n+an+a[n-1])
- if c==0:
- an=an+1
- elif list1.count(n-an-a[n-1])+list1.count(n/an-a[n-1])+list1.count(n+an-a[n-1])>0
- sg=0
- a.append(an)
- if list1.count(n-an-a[n-1])>0:
- sg=list2[list1.index(n-an-a[n-1])]*100+11
- elif list1.count(n/an-a[n-1])>0:
- sg=list2[list1.index(n/an-a[n-1])]*100+12
- elif list1.count(n+an-a[n-1])>0:
- sg=list2[list1.index(n+an-a[n-1])]*100+13
- elif list1.count((n-an)/a[n-1])+list1.count((n/an)/a[n-1])+list1.count((n+an)/a[n-1])>0:
- sg=0
- a.append(an)
- if list1.count((n-an)/a[n-1])>0:
- sg=list2[list1.index((n-an)/a[n-1])]*100+21
- elif list1.count((n/an)/a[n-1])>0:
- sg=list2[list1.index((n/an)/a[n-1])]*100+22
- elif list1.count((n+an)/a[n-1])>0:
- sg=list2[list1.index((n+an)/a[n-1])]*100+23
- elif list1.count(n-an+a[n-1])+list1.count(n/an+a[n-1])+list1.count(n+an+a[n-1])>0:
- sg=0
- a.append(an)
- if list1.count(n-an+a[n-1])>0:
- sg=list2[list1.index(n-an+a[n-1])]*100+31
- elif list1.count(n/an+a[n-1])>0:
- sg=list2[list1.index(n/an+a[n-1])]*100+32
- elif list1.count(n+an+a[n-1])>0:
- sg=list2[list1.index(n+an+a[n-1])]*100+33
- if c>0:
- sg=str(sg)
- l=len(sg)
- i=0
- st=""
- nm=a[n-an]
- while i<l:
- if sg[i]=="1":
- st=st+str(nm)+"+"+str(a[n-an+i+1])+" "
- nm=nm+a[n-an+i+1]
- elif sg[i]=="2":
- st=st+str(nm)+"*"+str(a[n-an+i+1])+" "
- nm=nm*a[n-an+i+1]
- elif sg[i]=="3":
- st=st+str(nm)+"-"+str(a[n-an+i+1])+" "
- nm=nm-a[n-an+i+1]
- i=i+1
- print(n,an,"(",c,"x )",st)
- n=n+1
- an=2
- return a
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement