Best shuffle: Difference between revisions

(→‎{{header|AutoHotkey}}: Marked incorrect and no output given.)
Line 1,656:
import random
 
def count(w1,w2wnew):
return sum(c1==c2 for c1,c2 in zip(w1, w2wnew))
 
def best_shuffle(w):
w2, w2oldwnew = list(w), []
n = len(w)
rangelists = (list(range(n)), list(range(n)))
w2old = w2[:]
for r in rangelists:
random.shuffle(r)
Line 1,669 ⟶ 1,668:
for i in rangei:
for j in rangej:
if i != j and w2wnew[j] != w2wnew[i] and w[i] != w2wnew[j] and w[j] != w2wnew[i]:
w2wnew[j], w2wnew[i] = w2wnew[i], w2wnew[j]
w2wnew = ''.join(w2wnew)
return w2wnew, count(w, w2wnew)
 
 
Line 1,680 ⟶ 1,679:
test_words += ['aardvarks are ant eaters', 'immediately', 'abba']
for w in test_words:
w2wnew, c = best_shuffle(w)
print("%29s, %-29s ,(%i)" % (w, w2wnew, c))</lang>
 
;Sample output
Anonymous user