Best shuffle: Difference between revisions

no edit summary
(Added Erlang)
No edit summary
Line 1,258:
xxxxx, xxxxx, (5)</pre>
 
=={{header|Elena}}==
<lang Elena>#define system.
 
#symbol shuffle = &&:aLiteral
[
#var aLength := aLiteral Length.
#var aShuffled := stringControl toArray:aLiteral.
 
control from:0 &till:aLength &do: &&:i
[
#var aChar := aLiteral@i.
(aChar == (aShuffled@i)) ?
[
control from:0 &till:aLength &do: &&:j
[
#var anAltChar := aShuffled@j.
(anAltChar != aChar)and:[ anAltChar != (aLiteral@i) ]and:[aChar != (aLiteral@j)] ?
[
arrayControl exchange:i &with:j &in:aShuffled.
#break nil.
].
].
].
].
 
^ Summing new:(String new) foreach:aShuffled Literal.
].
 
#symbol scoreShuffle = &&:anOriginal:aShuffled
[
#var aScore := Integer new.
control from:0 &till:(anOriginal Length) &do: &&:i
[ (anOriginal @ i) == (aShuffled @ i) ? [ aScore += 1. ]. ].
^ aScore Number.
].
 
#symbol program =
[
control foreach:("abracadabra", "seesaw", "grrrrrr", "pop", "up", "a") &do: &&:aWord
[
#var aShuffled := shuffle:aWord.
 
console write:"The best shuffle of " write:aWord write:" is " write:aShuffled write:"("
write:(scoreShuffle:aWord:aShuffled) writeLine:")".
].
 
console readChar.
].</lang>
=={{header|Erlang}}==
Deterministic version.
Anonymous user