80 lines
1.8 KiB
Text
80 lines
1.8 KiB
Text
# Project : Anagrams
|
|
|
|
load "stdlib.ring"
|
|
fn1 = "unixdict.txt"
|
|
|
|
fp = fopen(fn1,"r")
|
|
str = fread(fp, getFileSize(fp))
|
|
fclose(fp)
|
|
strlist = str2list(str)
|
|
anagram = newlist(len(strlist), 5)
|
|
anag = list(len(strlist))
|
|
result = list(len(strlist))
|
|
for x = 1 to len(result)
|
|
result[x] = 0
|
|
next
|
|
for x = 1 to len(anag)
|
|
anag[x] = 0
|
|
next
|
|
for x = 1 to len(anagram)
|
|
for y = 1 to 5
|
|
anagram[x][y] = 0
|
|
next
|
|
next
|
|
|
|
for n = 1 to len(strlist)
|
|
for m = 1 to len(strlist)
|
|
sum = 0
|
|
if len(strlist[n]) = 4 and len(strlist[m]) = 4 and n != m
|
|
for p = 1 to len(strlist[m])
|
|
temp1 = count(strlist[n], strlist[m][p])
|
|
temp2 = count(strlist[m], strlist[m][p])
|
|
if temp1 = temp2
|
|
sum = sum + 1
|
|
ok
|
|
next
|
|
if sum = 4
|
|
anag[n] = anag[n] + 1
|
|
if anag[n] < 6 and result[n] = 0 and result[m] = 0
|
|
anagram[n][anag[n]] = strlist[m]
|
|
result[m] = 1
|
|
ok
|
|
ok
|
|
ok
|
|
next
|
|
if anag[n] > 0
|
|
result[n] = 1
|
|
ok
|
|
next
|
|
|
|
for n = 1 to len(anagram)
|
|
flag = 0
|
|
for m = 1 to 5
|
|
if anagram[n][m] != 0
|
|
if m = 1
|
|
see strlist[n] + " "
|
|
flag = 1
|
|
ok
|
|
see anagram[n][m] + " "
|
|
ok
|
|
next
|
|
if flag = 1
|
|
see nl
|
|
ok
|
|
next
|
|
|
|
func getFileSize fp
|
|
c_filestart = 0
|
|
c_fileend = 2
|
|
fseek(fp,0,c_fileend)
|
|
nfilesize = ftell(fp)
|
|
fseek(fp,0,c_filestart)
|
|
return nfilesize
|
|
|
|
func count(astring,bstring)
|
|
cnt = 0
|
|
while substr(astring,bstring) > 0
|
|
cnt = cnt + 1
|
|
astring = substr(astring,substr(astring,bstring)+len(string(sum)))
|
|
end
|
|
return cnt
|