-
Notifications
You must be signed in to change notification settings - Fork 0
/
permutation3.py
148 lines (92 loc) · 2.4 KB
/
permutation3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
from math import factorial
def permutate3(stng):
#so swap A with consecutive letters unti you get to the end.
#then take a "break" and swap the 2 letters at the beginning of teh string
#swap A back to the front
#take another break and swap the two letters at the end of the string
#start over again
Lst=[]
ch=stng[0]
#word=stng
#actuall turn the whole thing into a list and then rewrite the entire code. wow this will be fun.
word=stng[1:]
for r in range(factorial(len(word))):
for n in range(1,(len(word)+1)):
w=word[:n]+ch+word[n:]
if w not in Lst:
Lst.append(w)
r+=1
print('4WORD ',w)
print('lstr', Lst[len(Lst)-1])
werd=swapFront(Lst[len(Lst)-1])
if not werd in Lst:
Lst.append(werd)
r+=1
else: return Lst
word=werd[:len(werd)-1]
for n in range(1,len(word)+1):
w=word[:len(word)-n]+ch+word[len(word)-n:]
if not w in Lst:
Lst.append(w)
r+=1
else: return Lst
print('BACKWORD ',w)
werd=swapBk(Lst[len(Lst)-1])
if werd not in Lst:
Lst.append(werd)
r+=1
else: return Lst
word=werd[1:]
#start again
for n in range(1,(len(word)+1)):
w=word[:n]+ch+word[n:]
if w not in Lst:
Lst.append(w)
r+=1
print('4WR ',w)
werd=swapFr(Lst[len(Lst)-1])
if not werd in Lst:
Lst.append(werd)
r+=1
else: return Lst
word=werd[:len(werd)-1]
for n in range(1,len(word)+1):
w=word[:len(word)-n]+ch+word[len(word)-n:]
if not w in Lst:
Lst.append(w)
r+=1
else: return Lst
print('BKWORD ',w)
werd=swapBack(Lst[len(Lst)-1])
if werd not in Lst:
Lst.append(werd)
r+=1
else: return Lst
word=werd[1:]
return Lst
def swapFr(stng):
if len(stng)<2:
return stng
stng=stng[:2]+stng[3]+stng[2]+stng[4:]
def swapFront(stng):
if len(stng)<2:
return stng
stng=stng[1]+stng[0]+stng[2:]
print('SWAPFRONT ',stng)
return stng
def swapBk(stng):
stng=stng[:len(stng)-3]+stng[len(stng)-2]+stng[len(stng)-3]
return stng
def swapBack(stng):
if len(stng)<2:
return stng
stng=stng[:len(stng)-2]+stng[len(stng)-1]+stng[len(stng)-2]
print('SWAPBACK ',stng)
return stng
def permute3(stng):
if len(stng)==3:
def main():
Lst=permutate3('ABCDE')
for a in Lst:
print(a)
if __name__ == '__main__':main()