RosettaCodeData/Task/Best-shuffle/Sidef/best-shuffle.sidef

22 lines
465 B
Text
Raw Permalink Normal View History

2016-12-05 23:44:36 +01:00
func best_shuffle(String orig) -> (String, Number) {
var s = orig.chars
var t = s.shuffle
2017-09-23 10:01:46 +02:00
for i (^s) {
for j (^s) {
2016-12-05 23:44:36 +01:00
if (i!=j && t[i]!=s[j] && t[j]!=s[i]) {
2017-09-23 10:01:46 +02:00
t[i, j] = t[j, i]
break
2016-12-05 23:44:36 +01:00
}
}
}
2017-09-23 10:01:46 +02:00
(t.join, s ~Z== t -> count(true))
2016-12-05 23:44:36 +01:00
}
2017-09-23 10:01:46 +02:00
for word (<abracadabra seesaw elk grrrrrr up a>) {
2016-12-05 23:44:36 +01:00
var (sword, score) = best_shuffle(word)
"%-12s %12s: %d\n".printf(word, sword, score)
}