26 lines
1 KiB
Text
26 lines
1 KiB
Text
string 0; \use zero-terminated strings
|
|
int I, Set, HasK, HasOther, HasDup, ECnt, Ch;
|
|
char Word(25);
|
|
def LF=$0A, CR=$0D, EOF=$1A;
|
|
[FSet(FOpen("unixdict.txt", 0), ^I);
|
|
OpenI(3);
|
|
repeat I:= 0; HasK:= false; HasOther:= false;
|
|
ECnt:= 0; Set:= 0; HasDup:= false;
|
|
loop [repeat Ch:= ChIn(3) until Ch # CR; \remove possible CR
|
|
if Ch=LF or Ch=EOF then quit;
|
|
Word(I):= Ch;
|
|
I:= I+1;
|
|
if Ch = ^k then HasK:= true;
|
|
case Ch of ^k,^n,^d,^e,^o,^g,^l,^w: [] \assume all lowercase
|
|
other HasOther:= true;
|
|
if Ch = ^e then ECnt:= ECnt+1
|
|
else [if Set & 1<<(Ch-^a) then HasDup:= true;
|
|
Set:= Set ! 1<<(Ch-^a);
|
|
];
|
|
];
|
|
Word(I):= 0; \terminate string
|
|
if I>=3 & HasK & ~HasOther & ~HasDup & ECnt<=2 then
|
|
[Text(0, Word); CrLf(0);
|
|
];
|
|
until Ch = EOF;
|
|
]
|