40 lines
619 B
Text
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
|