Jump to content

Best shuffle: Difference between revisions

no edit summary
No edit summary
Line 1,236:
a -> a (1)
</pre>
 
=={{header|Groovy}}==
<lang groovy>def shuffle(text) {
def list = (text as List)
Collections.shuffle(list)
[original: text, shuffled: list.join(""), score: score(text, list)]
}
 
def score(original, shuffled) {
int score = 0
original.eachWithIndex { character, index ->
if (character == shuffled[index]) {
score++
}
}
score
}
 
def bestShuffle(text) {
def best = shuffle(text)
for (int i = 0; i < 30 && best.score > 0; i++) {
def newTry = shuffle(text)
if (newTry.score < best.score) {
best = newTry
}
}
best
}
 
["abracadabra", "seesaw", "elk", "grrrrrr", "up", "a"].each { text ->
def result = bestShuffle(text)
println "${result.original}, ${result.shuffled}, (${result.score})"
}
</lang>
Output:
<pre>
abracadabra, bdaarcabaar, (1)
seesaw, awsese, (0)
elk, kel, (0)
grrrrrr, rrrrrrg, (5)
up, pu, (0)
a, a, (1)
</pre>
 
 
=={{header|Haskell}}==
Cookies help us deliver our services. By using our services, you agree to our use of cookies.