46 lines
1.3 KiB
Plaintext
46 lines
1.3 KiB
Plaintext
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
|