Best shuffle: Difference between revisions
Content added Content deleted
Walterpachl (talk | contribs) m (→{{header|PL/I}}: fix language tags) |
|||
Line 1,262: | Line 1,262: | ||
#define system'routines. |
#define system'routines. |
||
#symbol shuffle = |
#symbol shuffle = (:aLiteral) |
||
[ |
[ |
||
#var aLength := aLiteral |
#var aLength := aLiteral length. |
||
#var aShuffled := |
#var aShuffled := literalControl toArray:aLiteral. |
||
control from:0 &till:aLength &do: |
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: |
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 |
^ Summing new:(String new) foreach:aShuffled literal. |
||
]. |
]. |
||
#symbol scoreShuffle = |
#symbol scoreShuffle = (:anOriginal:aShuffled) |
||
[ |
[ |
||
#var aScore := Integer new. |
#var aScore := Integer new. |
||
control from:0 &till:(anOriginal |
control from:0 &till:(anOriginal length) &do: i |
||
[ (anOriginal @ i) == (aShuffled @ i) ? [ aScore += 1. ]. ]. |
[ (anOriginal @ i) == (aShuffled @ i) ? [ aScore += 1. ]. ]. |
||
^ aScore |
^ aScore number. |
||
]. |
]. |
||
#symbol program = |
#symbol program = |
||
[ |
[ |
||
control foreach:("abracadabra", "seesaw", "grrrrrr", "pop", "up", "a") &do: |
control foreach:("abracadabra", "seesaw", "grrrrrr", "pop", "up", "a") &do: aWord |
||
[ |
[ |
||
#var aShuffled := shuffle:aWord. |
#var aShuffled := shuffle:aWord. |