Listing 1. findwords.sh11935l1.qrk
> $testwords
fi
minlength="$(( $minlength + 1 ))"
done
## PART TWO: sort letters for validity filter
pattern="$(echo $1 | sed 's/./&\
/g' | tr '[[:upper:]]' '[[:lower:]]' | sort | fmt | sed 's/ //g')"
for word in $( cat $testwords )
do
# echo "checking $word for validity"
simplified="$(echo $word | sed 's/./&\
/g' | tr '[[:upper:]]' '[[:lower:]]' | sort | fmt | sed 's/ //g')"
## PART THREE: do all letters of the word appear in the pattern
# once and exactly once? Easy way: loop through and
# remove each letter as used, then compare end states
indx=1
failed=0
before=$pattern
while [ $indx -lt ${#simplified} ]
do
ltr=${simplified:$indx:1}
after=$(echo $before | sed "s/$ltr/-/")
if [ $before = $after ] ; then
# nothing changed, so we don't have that
# letter available any more
if [ $showfails ] ; then
echo "FAILURE: came close, but can't make $word"
fi
failed=1
else
before=$after
fi
indx=$(( $indx + 1 ))
done
if [ $failed -eq 0 ] ; then
echo "SUCCESS: You can make the word $word"
fi
done
/bin/rm -f $testwords
exit 0