mirror of https://github.com/tLDP/LDP
67 lines
1.8 KiB
Bash
67 lines
1.8 KiB
Bash
#!/bin/bash
|
|
# cw-solver.sh
|
|
|
|
# Crossword puzzle and anagramming word game solver.
|
|
# You know *some* of the letters in the word you're looking for,
|
|
#+ so you need a list of all valid words
|
|
#+ with the known letters in given positions.
|
|
# For example: w...i....n
|
|
# 1???5????10
|
|
# w in position 1, 3 unknowns, i in the 5th, 4 unknowns, n at the end.
|
|
# (See comments at end of script.)
|
|
|
|
|
|
E_NOPATT=71
|
|
DICT=/usr/share/dict/word.lst
|
|
# ^^^^^^^^ Looks for word list here.
|
|
# ASCII word list, one word per line.
|
|
# If you happen to need an appropriate list,
|
|
#+ download the author's "yawl" word list package.
|
|
# http://ibiblio.org/pub/Linux/libs/yawl-0.3.2.tar.gz
|
|
# or
|
|
# http://personal.riverusers.com/~thegrendel/yawl-0.3.2.tar.gz
|
|
|
|
|
|
if [ -z "$1" ] # If no word pattern specified
|
|
then #+ as a command-line argument . . .
|
|
echo #+ . . . then . . .
|
|
echo "Usage:" #+ Usage message.
|
|
echo
|
|
echo ""$0" \"pattern,\""
|
|
echo "where \"pattern\" is in the form"
|
|
echo "xxx..x.x..."
|
|
echo
|
|
echo "The x's represent known letters,"
|
|
echo "and the periods are unknown letters (blanks)."
|
|
echo "Letters and periods can be in any position."
|
|
echo "For example, try: cw-solver.sh w...i....n"
|
|
echo
|
|
exit $E_NOPATT
|
|
fi
|
|
|
|
echo
|
|
# ===============================================
|
|
# This is where all the work gets done.
|
|
grep ^"$1"$ "$DICT" # Yes, only one line!
|
|
# | |
|
|
# ^ is start-of-word regex anchor.
|
|
# $ is end-of-word regex anchor.
|
|
|
|
# From _Stupid Grep Tricks_, vol. 1,
|
|
#+ a book the ABS Guide author may yet get around
|
|
#+ to writing one of these days . . .
|
|
# ===============================================
|
|
echo
|
|
|
|
|
|
exit $? # Script terminates here.
|
|
# If there are too many words generated,
|
|
#+ redirect the output to a file.
|
|
|
|
cw-solver w...i....n
|
|
|
|
twichildren
|
|
wellington
|
|
workingman
|
|
workingmen
|