Best shuffle: Difference between revisions
Content deleted Content added
→{{header|Kotlin}}: Updated example see https://github.com/dkandalov/rosettacode-kotlin for details |
|||
Line 1,359: | Line 1,359: | ||
=={{header|Elena}}== |
=={{header|Elena}}== |
||
<lang Elena># |
<lang Elena>#import system'routines. |
||
⚫ | |||
#define system'routines. |
|||
⚫ | |||
extension op |
|||
{ |
{ |
||
shuffled |
|||
[ |
[ |
||
var anOriginal := self toArray. |
|||
var aShuffled := self toArray. |
|||
0 to:(anOriginal length - 1) &doEach: (:i) |
0 to:(anOriginal length - 1) &doEach: (:i) |
||
Line 1,374: | Line 1,373: | ||
0 to:(anOriginal length - 1) &doEach: (:j) |
0 to:(anOriginal length - 1) &doEach: (:j) |
||
[ |
[ |
||
((i != j) |
if ((i != j) && [anOriginal@i != (aShuffled@j)] && [anOriginal@j != (aShuffled@i)]) |
||
[ |
[ |
||
aShuffled exchange:i:j. |
aShuffled exchange:i:j. |
||
Line 1,384: | Line 1,383: | ||
] |
] |
||
score : anOriginalText |
|||
[ |
[ |
||
var aShuffled := self toArray. |
|||
var anOriginal := anOriginalText toArray. |
|||
var aScore := Integer new. |
|||
0 to:(anOriginal length - 1) &doEach: (:i) |
0 to:(anOriginal length - 1) &doEach: (:i) |
||
[ ((anOriginal @ i) == (aShuffled @ i)) |
[ if ((anOriginal @ i) == (aShuffled @ i)) [ aScore += 1. ]. ]. |
||
^ aScore |
^ aScore get. |
||
] |
] |
||
} |
} |
||
program = |
|||
[ |
[ |
||
("abracadabra", "seesaw", "grrrrrr", "pop", "up", "a") run &each: aWord |
("abracadabra", "seesaw", "grrrrrr", "pop", "up", "a") run &each: aWord |
||
[ |
[ |
||
var aShuffled := aWord shuffled. |
|||
console writeLine:"The best shuffle of ":aWord:" is ":aShuffled:"(":(aShuffled score:aWord):")". |
console writeLine:"The best shuffle of ":aWord:" is ":aShuffled:"(":(aShuffled score:aWord):")". |