Best shuffle: Difference between revisions

(→‎{{header|Kotlin}}: Updated example see https://github.com/dkandalov/rosettacode-kotlin for details)
Line 1,359:
 
=={{header|Elena}}==
<lang Elena>#defineimport system'routines.
#defineimport extensions.
#define system'routines.
#define extensions.
 
#class(extension) op
{
#method shuffled
[
#var anOriginal := self toArray.
#var aShuffled := self toArray.
0 to:(anOriginal length - 1) &doEach: (:i)
Line 1,374 ⟶ 1,373:
0 to:(anOriginal length - 1) &doEach: (:j)
[
if ((i != j)and: && [anOriginal@i != (aShuffled@j)]and: && [anOriginal@j != (aShuffled@i)]) ?
[
aShuffled exchange:i:j.
Line 1,384 ⟶ 1,383:
]
#method score : anOriginalText
[
#var aShuffled := self toArray.
#var anOriginal := anOriginalText toArray.
#var aScore := Integer new.
 
0 to:(anOriginal length - 1) &doEach: (:i)
[ if ((anOriginal @ i) == (aShuffled @ i)) ? [ aScore += 1. ]. ].
^ aScore valueget.
]
}
 
#symbol program =
[
("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):")".
Anonymous user