46 lines
1.3 KiB
Text
46 lines
1.3 KiB
Text
|
|
function pairwiseAnagrams X
|
|||
|
|
if the optionkey is down then breakpoint
|
|||
|
|
put the long seconds into T
|
|||
|
|
put empty into itemsSoFar
|
|||
|
|
repeat for each item W in X
|
|||
|
|
put word 1 to -1 of W into W
|
|||
|
|
if D[W] = 1 then next repeat
|
|||
|
|
put 1 into D[W]
|
|||
|
|
repeat for each item W2 in itemsSoFar
|
|||
|
|
put W,W2 & cr after WPairs[sortChars(W & W2,true)]
|
|||
|
|
end repeat
|
|||
|
|
put W & comma after itemsSoFar
|
|||
|
|
end repeat
|
|||
|
|
repeat for each key K in WPairs
|
|||
|
|
put empty into pairsSoFar
|
|||
|
|
repeat for each line L in WPairs[K]
|
|||
|
|
repeat for each line L2 in pairsSoFar
|
|||
|
|
if item 1 of L is among the items of L2 or item 2 of L is among the items of L2 then next repeat
|
|||
|
|
put L && "and" && L2 & cr after R
|
|||
|
|
end repeat
|
|||
|
|
put L & cr after pairsSoFar
|
|||
|
|
end repeat
|
|||
|
|
end repeat
|
|||
|
|
put the long seconds - T
|
|||
|
|
return char 1 to -2 of R
|
|||
|
|
end pairwiseAnagrams
|
|||
|
|
|
|||
|
|
function sortChars X,lettersOnly
|
|||
|
|
get charsToItems(X,lettersOnly)
|
|||
|
|
sort items of it
|
|||
|
|
return itemsToChars(it)
|
|||
|
|
end sortChars
|
|||
|
|
|
|||
|
|
function charsToItems X,lettersOnly
|
|||
|
|
repeat for each char C in X
|
|||
|
|
if lettersOnly and C is not in "abcdefghijklmnopqrstuvwxyz" then next repeat
|
|||
|
|
put C & comma after R
|
|||
|
|
end repeat
|
|||
|
|
return char 1 to -2 of R
|
|||
|
|
end charsToItems
|
|||
|
|
|
|||
|
|
function itemsToChars X
|
|||
|
|
replace comma with empty in X
|
|||
|
|
return X
|
|||
|
|
end itemsToChars
|