Best shuffle: Difference between revisions
Content added Content deleted
m (→{{header|Sidef}}: updated code) |
|||
Line 1,359: | Line 1,359: | ||
=={{header|Elena}}== |
=={{header|Elena}}== |
||
<lang Elena> |
<lang Elena>import system'routines. |
||
import extensions. |
|||
extension op |
extension op |
||
Line 1,369: | Line 1,369: | ||
var aShuffled := self toArray. |
var aShuffled := self toArray. |
||
0 to:(anOriginal length - 1) |
0 to:(anOriginal length - 1) doEach: (:i) |
||
[ |
[ |
||
0 to:(anOriginal length - 1) |
0 to:(anOriginal length - 1) doEach: (:j) |
||
[ |
[ |
||
if ((i != j) && |
if ((i != j) && $(anOriginal@i != (aShuffled@j)) && $(anOriginal@j != (aShuffled@i))) |
||
[ |
[ |
||
aShuffled exchange:i:j |
aShuffled exchange:i:j |
||
]. |
]. |
||
]. |
]. |
||
]. |
]. |
||
^ aShuffled summarize:(String new) literal |
^ aShuffled summarize:(String new); literal |
||
] |
] |
||
Line 1,389: | Line 1,389: | ||
var aScore := Integer new. |
var aScore := Integer new. |
||
0 to:(anOriginal length - 1) |
0 to:(anOriginal length - 1) doEach: (:i) |
||
[ if ((anOriginal @ i) == (aShuffled @ i)) [ aScore |
[ if ((anOriginal @ i) == (aShuffled @ i)) [ aScore append int:1 ] ]. |
||
^ aScore get. |
^ aScore get. |
||
Line 1,398: | Line 1,398: | ||
program = |
program = |
||
[ |
[ |
||
("abracadabra", "seesaw", "grrrrrr", "pop", "up", "a") run |
("abracadabra", "seesaw", "grrrrrr", "pop", "up", "a") run each: (:aWord) |
||
[ |
[ |
||
var aShuffled := aWord shuffled. |
var aShuffled := aWord shuffled. |
||
console |
console printLine:"The best shuffle of ":aWord:" is ":aShuffled:"(":(aShuffled score:aWord):")". |
||
]. |
]. |
||