51 lines
1.2 KiB
Plaintext
51 lines
1.2 KiB
Plaintext
INSTALL @lib$+"SORTLIB"
|
|
Sort% = FN_sortinit(0,0)
|
|
|
|
DIM dict$(26000*2)
|
|
|
|
REM Load the dictionary, eliminating palindromes:
|
|
dict% = OPENIN("C:\unixdict.txt")
|
|
IF dict%=0 ERROR 100, "No dictionary file"
|
|
index% = 0
|
|
REPEAT
|
|
A$ = GET$#dict%
|
|
B$ = FNreverse(A$)
|
|
IF A$<>B$ THEN
|
|
dict$(index%) = A$
|
|
dict$(index%+1) = B$
|
|
index% += 2
|
|
ENDIF
|
|
UNTIL EOF#dict%
|
|
CLOSE #dict%
|
|
Total% = index%
|
|
|
|
REM Sort the dictionary:
|
|
C% = Total%
|
|
CALL Sort%, dict$(0)
|
|
|
|
REM Find semordnilaps:
|
|
pairs% = 0
|
|
examples% = 0
|
|
FOR index% = 0 TO Total%-2
|
|
IF dict$(index%)=dict$(index%+1) THEN
|
|
IF examples%<5 IF LEN(dict$(index%))>4 THEN
|
|
PRINT dict$(index%) " " FNreverse(dict$(index%))
|
|
examples% += 1
|
|
ENDIF
|
|
pairs% += 1
|
|
ENDIF
|
|
NEXT
|
|
|
|
PRINT "Total number of unique pairs = "; pairs%/2
|
|
END
|
|
|
|
DEF FNreverse(A$)
|
|
LOCAL I%, L%, P%
|
|
IF A$="" THEN =""
|
|
L% = LENA$ - 1
|
|
P% = !^A$
|
|
FOR I% = 0 TO L% DIV 2
|
|
SWAP P%?I%, L%?(P%-I%)
|
|
NEXT
|
|
= A$
|