36 lines
832 B
Text
36 lines
832 B
Text
\util.g
|
|
|
|
proc nonrec is_ordered(*char str) bool:
|
|
while str* /= '\e' and str* <= (str+1)* do
|
|
str := str + 1
|
|
od;
|
|
str* = '\e' or (str+1)* = '\e'
|
|
corp
|
|
|
|
proc nonrec main() void:
|
|
[64]char buf;
|
|
*char str;
|
|
word length, max_length;
|
|
file(1024) dictfile;
|
|
channel input text dict;
|
|
|
|
str := &buf[0];
|
|
max_length := 0;
|
|
open(dict, dictfile, "unixdict.txt");
|
|
while readln(dict; str) do
|
|
if is_ordered(str) then
|
|
length := CharsLen(str);
|
|
if length > max_length then max_length := length fi
|
|
fi
|
|
od;
|
|
close(dict);
|
|
|
|
open(dict, dictfile, "unixdict.txt");
|
|
while readln(dict; str) do
|
|
if is_ordered(str) then
|
|
length := CharsLen(str);
|
|
if length = max_length then writeln(str) fi
|
|
fi
|
|
od;
|
|
close(dict)
|
|
corp
|