31 lines
1.1 KiB
Plaintext
31 lines
1.1 KiB
Plaintext
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%) + ")"
|