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, |
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 |
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]); |
||
⚫ | |||
} |
|||
⚫ | |||
=={{header|REXX}}== |
=={{header|REXX}}== |