Best shuffle: Difference between revisions
Content added Content deleted
(jq) |
|||
Line 1,369: | Line 1,369: | ||
var aShuffled := self toArray. |
var aShuffled := self toArray. |
||
0 to:(anOriginal length - 1) |
0 to:(anOriginal length - 1) do(:i) |
||
[ |
[ |
||
0 to:(anOriginal length - 1) |
0 to:(anOriginal length - 1) do(:j) |
||
[ |
[ |
||
if ((i != j) && $(anOriginal |
if ((i != j) && $(anOriginal[i] != aShuffled[j]) && $(anOriginal[j] != aShuffled[i])) |
||
[ |
[ |
||
aShuffled exchange |
aShuffled exchange(i,j) |
||
]. |
]. |
||
]. |
]. |
||
]. |
]. |
||
^ aShuffled summarize |
^ aShuffled summarize(String new); literal |
||
] |
] |
||
Line 1,389: | Line 1,389: | ||
var aScore := Integer new. |
var aScore := Integer new. |
||
0 to |
0 to(anOriginal length - 1) do(:i) |
||
[ if |
[ if (anOriginal[i] == aShuffled[i]) [ aScore append:1 ] ]. |
||
^ aScore |
^ aScore value. |
||
] |
] |
||
} |
} |
||
Line 1,398: | Line 1,398: | ||
program = |
program = |
||
[ |
[ |
||
("abracadabra", "seesaw", "grrrrrr", "pop", "up", "a") |
("abracadabra", "seesaw", "grrrrrr", "pop", "up", "a") forEach(:aWord) |
||
[ |
[ |
||
var aShuffled := aWord shuffled. |
var aShuffled := aWord shuffled. |
||
console printLine |
console printLine("The best shuffle of ",aWord," is ",aShuffled,"(",aShuffled score:aWord,")"). |
||
]. |
]. |
||