RosettaCodeData/Task/Best-shuffle/Action-/best-shuffle.action
2023-07-01 13:44:08 -04:00

40 lines
619 B
Text

PROC BestShuffle(CHAR ARRAY orig,res)
BYTE i,j,len
CHAR tmp
len=orig(0)
SCopy(res,orig)
FOR i=1 TO len
DO
FOR j=1 TO len
DO
IF i#j AND orig(i)#res(j) AND orig(j)#res(i) THEN
tmp=res(i) res(i)=res(j) res(j)=tmp
FI
OD
OD
RETURN
PROC Test(CHAR ARRAY orig)
CHAR ARRAY res(100)
BYTE i,score
BestShuffle(orig,res)
score=0
FOR i=1 TO orig(0)
DO
IF orig(i)=res(i) THEN
score==+1
FI
OD
PrintF("%S, %S, (%B)%E",orig,res,score)
RETURN
PROC Main()
Test("abracadabra")
Test("seesaw")
Test("elk")
Test("grrrrrr")
Test("up")
Test("a")
RETURN