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) doEach: (:i)
0 to:(anOriginal length - 1) do(:i)
[
[
0 to:(anOriginal length - 1) doEach: (:j)
0 to:(anOriginal length - 1) do(:j)
[
[
if ((i != j) && $(anOriginal@i != (aShuffled@j)) && $(anOriginal@j != (aShuffled@i)))
if ((i != j) && $(anOriginal[i] != aShuffled[j]) && $(anOriginal[j] != aShuffled[i]))
[
[
aShuffled exchange:i:j
aShuffled exchange(i,j)
].
].
].
].
].
].
^ aShuffled summarize:(String new); literal
^ aShuffled summarize(String new); literal
]
]
Line 1,389: Line 1,389:
var aScore := Integer new.
var aScore := Integer new.


0 to:(anOriginal length - 1) doEach: (:i)
0 to(anOriginal length - 1) do(:i)
[ if ((anOriginal @ i) == (aShuffled @ i)) [ aScore append int:1 ] ].
[ if (anOriginal[i] == aShuffled[i]) [ aScore append:1 ] ].
^ aScore get.
^ aScore value.
]
]
}
}
Line 1,398: Line 1,398:
program =
program =
[
[
("abracadabra", "seesaw", "grrrrrr", "pop", "up", "a") run each: (:aWord)
("abracadabra", "seesaw", "grrrrrr", "pop", "up", "a") forEach(:aWord)
[
[
var aShuffled := aWord shuffled.
var aShuffled := aWord shuffled.


console printLine:"The best shuffle of ":aWord:" is ":aShuffled:"(":(aShuffled score:aWord):")".
console printLine("The best shuffle of ",aWord," is ",aShuffled,"(",aShuffled score:aWord,")").
].
].