a$ = "abracadabra" : b$ = FNshuffle(a$) : PRINT a$ " -> " b$ FNsame(a$,b$) a$ = "seesaw" : b$ = FNshuffle(a$) : PRINT a$ " -> " b$ FNsame(a$,b$) a$ = "elk" : b$ = FNshuffle(a$) : PRINT a$ " -> " b$ FNsame(a$,b$) a$ = "grrrrrr" : b$ = FNshuffle(a$) : PRINT a$ " -> " b$ FNsame(a$,b$) a$ = "up" : b$ = FNshuffle(a$) : PRINT a$ " -> " b$ FNsame(a$,b$) a$ = "a" : b$ = FNshuffle(a$) : PRINT a$ " -> " b$ FNsame(a$,b$) END DEF FNshuffle(s$) LOCAL i%, j%, l%, s%, t%, t$ t$ = s$ : s% = !^s$ : t% = !^t$ : l% = LEN(t$) FOR i% = 0 TO l%-1 : SWAP t%?i%,t%?(RND(l%)-1) : NEXT FOR i% = 0 TO l%-1 FOR j% = 0 TO l%-1 IF i%<>j% THEN IF t%?i%<>s%?j% IF s%?i%<>t%?j% THEN SWAP t%?i%,t%?j% EXIT FOR ENDIF ENDIF NEXT NEXT i% = t$ DEF FNsame(s$, t$) LOCAL i%, n% FOR i% = 1 TO LEN(s$) IF MID$(s$,i%,1)=MID$(t$,i%,1) n% += 1 NEXT = " (" + STR$(n%) + ")"