Eu fiz algumas modificações no script do Wumpus Q. Wumbley para torná-lo útil. Mais importante, adicionei um contador para exibir o número de soluções e silenciei a saída detalhada do MINISAT, além de adicionar alguns canais importantes aos arquivos temporários para preservar os arquivos de entrada. Por fim, elimina o requisito de fornecer um arquivo de saída para que você possa chamá-lo de SCRIPTNAME FILENAME na linha de comando.
#!/bin/sh
SOLUTIONS=0
cp $1 /tmp/tmpsat
while :; do
minisat -verb=0 /tmp/tmpsat /tmp/tmpout > /tmp/tmpmsg 2> /tmp/tmpmsg
if [ 'head -1 /tmp/tmpout' = UNSAT ]; then
break
fi
SOLUTIONS=$((SOLUTIONS + 1))
tail -1 /tmp/tmpout |
awk '{
for(i=1;i<NF;++i) { $i = -$i }
print
}' >> /tmp/tmpsat
done
echo There are $SOLUTIONS solutions.
rm -f /tmp/tmpsat
rm -f /tmp/tmpout
rm -f /tmp/tmpmsg