Word wheel: Difference between revisions
Content added Content deleted
(Added XPL0 example.) |
|||
Line 2,756: | Line 2,756: | ||
claremont with central letter 'a' |
claremont with central letter 'a' |
||
spearmint with central letter 'a' |
spearmint with central letter 'a' |
||
</pre> |
|||
=={{header|XPL0}}== |
|||
<lang XPL0>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; |
|||
]</lang> |
|||
{{out}} |
|||
<pre> |
|||
eke |
|||
elk |
|||
keel |
|||
keen |
|||
keg |
|||
ken |
|||
keno |
|||
knee |
|||
kneel |
|||
knew |
|||
know |
|||
knowledge |
|||
kong |
|||
leek |
|||
week |
|||
wok |
|||
woke |
|||
</pre> |
</pre> |