Best shuffle: Difference between revisions

Content added Content deleted
m (→‎{{header|PL/I}}: fix language tags)
Line 1,262: Line 1,262:
#define system'routines.
#define system'routines.


#symbol shuffle = &&:aLiteral
#symbol shuffle = (:aLiteral)
[
[
#var aLength := aLiteral Length.
#var aLength := aLiteral length.
#var aShuffled := stringControl toArray:aLiteral.
#var aShuffled := literalControl toArray:aLiteral.


control from:0 &till:aLength &do: &&:i
control from:0 &till:aLength &do: i
[
[
#var aChar := aLiteral@i.
#var aChar := aLiteral@i.
(aChar == (aShuffled@i)) ?
(aChar == (aShuffled@i)) ?
[
[
control from:0 &till:aLength &do: &&:j
control from:0 &till:aLength &do: j
[
[
#var anAltChar := aShuffled@j.
#var anAltChar := aShuffled@j.
Line 1,285: Line 1,285:
].
].


^ Summing new:(String new) foreach:aShuffled Literal.
^ Summing new:(String new) foreach:aShuffled literal.
].
].


#symbol scoreShuffle = &&:anOriginal:aShuffled
#symbol scoreShuffle = (:anOriginal:aShuffled)
[
[
#var aScore := Integer new.
#var aScore := Integer new.
control from:0 &till:(anOriginal Length) &do: &&:i
control from:0 &till:(anOriginal length) &do: i
[ (anOriginal @ i) == (aShuffled @ i) ? [ aScore += 1. ]. ].
[ (anOriginal @ i) == (aShuffled @ i) ? [ aScore += 1. ]. ].
^ aScore Number.
^ aScore number.
].
].


#symbol program =
#symbol program =
[
[
control foreach:("abracadabra", "seesaw", "grrrrrr", "pop", "up", "a") &do: &&:aWord
control foreach:("abracadabra", "seesaw", "grrrrrr", "pop", "up", "a") &do: aWord
[
[
#var aShuffled := shuffle:aWord.
#var aShuffled := shuffle:aWord.