Best shuffle: Difference between revisions

Content added Content deleted
(→‎{{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>#define system.
<lang Elena>#import system'routines.
#import extensions.
#define system'routines.
#define extensions.


#class(extension)op
extension op
{
{
#method shuffled
shuffled
[
[
#var anOriginal := self toArray.
var anOriginal := self toArray.
#var aShuffled := 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)and:[anOriginal@i != (aShuffled@j)]and:[anOriginal@j != (aShuffled@i)]) ?
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:
]
]
#method score : anOriginalText
score : anOriginalText
[
[
#var aShuffled := self toArray.
var aShuffled := self toArray.
#var anOriginal := anOriginalText toArray.
var anOriginal := anOriginalText toArray.
#var aScore := Integer new.
var aScore := Integer new.


0 to:(anOriginal length - 1) &doEach: (:i)
0 to:(anOriginal length - 1) &doEach: (:i)
[ ((anOriginal @ i) == (aShuffled @ i)) ? [ aScore += 1. ]. ].
[ if ((anOriginal @ i) == (aShuffled @ i)) [ aScore += 1. ]. ].
^ aScore value.
^ aScore get.
]
]
}
}


#symbol program =
program =
[
[
("abracadabra", "seesaw", "grrrrrr", "pop", "up", "a") run &each: aWord
("abracadabra", "seesaw", "grrrrrr", "pop", "up", "a") run &each: aWord
[
[
#var aShuffled := aWord shuffled.
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):")".