Best shuffle: Difference between revisions
Content added Content deleted
(→{{header|AutoHotkey}}: Marked incorrect and no output given.) |
(→Swap if it is locally better algorithm: Variable name changes.) |
||
Line 1,656: | Line 1,656: | ||
import random |
import random |
||
def count(w1, |
def count(w1,wnew): |
||
return sum(c1==c2 for c1,c2 in zip(w1, |
return sum(c1==c2 for c1,c2 in zip(w1, wnew)) |
||
def best_shuffle(w): |
def best_shuffle(w): |
||
wnew = list(w) |
|||
n = len(w) |
n = len(w) |
||
rangelists = (list(range(n)), list(range(n))) |
rangelists = (list(range(n)), list(range(n))) |
||
w2old = w2[:] |
|||
for r in rangelists: |
for r in rangelists: |
||
random.shuffle(r) |
random.shuffle(r) |
||
Line 1,669: | Line 1,668: | ||
for i in rangei: |
for i in rangei: |
||
for j in rangej: |
for j in rangej: |
||
if i != j and |
if i != j and wnew[j] != wnew[i] and w[i] != wnew[j] and w[j] != wnew[i]: |
||
wnew[j], wnew[i] = wnew[i], wnew[j] |
|||
wnew = ''.join(wnew) |
|||
return |
return wnew, count(w, wnew) |
||
Line 1,680: | Line 1,679: | ||
test_words += ['aardvarks are ant eaters', 'immediately', 'abba'] |
test_words += ['aardvarks are ant eaters', 'immediately', 'abba'] |
||
for w in test_words: |
for w in test_words: |
||
wnew, c = best_shuffle(w) |
|||
print("%29s, %-29s ,(%i)" % (w, |
print("%29s, %-29s ,(%i)" % (w, wnew, c))</lang> |
||
;Sample output |
;Sample output |