40 lines
928 B
Plaintext
40 lines
928 B
Plaintext
read_file(name) := block([file, s, L], file: openr(name), L: [],
|
|
while stringp(s: readline(file)) do L: cons(s, L), close(file), L)$
|
|
|
|
u: read_file("C:/my/mxm/unixdict.txt")$
|
|
|
|
v: map(lambda([s], [ssort(s), s]), u)$
|
|
|
|
w: sort(v, lambda([x, y], orderlessp(x[1], y[1])))$
|
|
|
|
ana(L) := block([m, n, p, r, u, v, w],
|
|
L: endcons(["", ""], L),
|
|
n: length(L),
|
|
r: "",
|
|
m: 0,
|
|
v: [ ],
|
|
w: [ ],
|
|
for i from 1 thru n do (
|
|
u: L[i],
|
|
if r = u[1] then (
|
|
w: cons(u[2], w)
|
|
) else (
|
|
p: length(w),
|
|
if p >= m then (
|
|
if p > m then (m: p, v: []),
|
|
v: cons(w, v)
|
|
),
|
|
w: [u[2]],
|
|
r: u[1]
|
|
)
|
|
),
|
|
v)$
|
|
|
|
ana(w);
|
|
/* [["evil", "levi", "live", "veil", "vile"],
|
|
["elan", "lane", "lean", "lena", "neal"],
|
|
["alger", "glare", "lager", "large", "regal"],
|
|
["angel", "angle", "galen", "glean", "lange"],
|
|
["caret", "carte", "cater", "crate", "trace"],
|
|
["abel", "able", "bale", "bela", "elba"]] */
|