Best shuffle: Difference between revisions

Content added Content deleted
Line 2,218: Line 2,218:
=={{header|Rascal}}==
=={{header|Rascal}}==
<lang Rascal>import Prelude;
<lang Rascal>import Prelude;

public tuple[str, str, int] bestShuffle(str s){
public tuple[str, str, int] bestShuffle(str s){
characters = chars(s);
characters = chars(s);


ranking = {<p, compareP(p, characters)> | p <- permutations(characters)};
ranking = {<p, countSame(p, characters)> | p <- permutations(characters)};
best = {<s, stringChars(p), n> | <p, n> <- ranking, n == min(range(ranking))};
best = {<s, stringChars(p), n> | <p, n> <- ranking, n == min(range(ranking))};
return takeOneFrom(best)[0];
return takeOneFrom(best)[0];
}
}


public int compareP(list[int] permutations, list[int] characters){
public int countSame(list[int] permutations, list[int] characters){
return (0 | it + 1 | n <- index(characters), permutations[n] == characters[n]);
return (0 | it + 1 | n <- index(characters), permutations[n] == characters[n]);
}</lang>
}
</lang>


=={{header|REXX}}==
=={{header|REXX}}==