Mike Mueller d820ab1f1c Remove some useless checks.
Some solution length logic was previously moved to handle_message.  Some of
the code in _valid_solution became nonsensical (not broken, just weird).

Cleaned up.
2012-03-04 22:57:10 -08:00
2012-02-24 00:10:33 -08:00
2012-02-24 00:10:33 -08:00
2012-03-04 22:57:10 -08:00
2012-03-04 15:26:32 -08:00
2012-02-24 00:10:33 -08:00

Supybot Word Games Plugin
=========================

A few word games to play in IRC with Supybot!

These games rely on a dictionary file (not included).  On Ubuntu, you can
normally just install the 'wamerican' package.  See the configurable variables
to customize.

Configuration:

  plugins.Wordgames.wordFile:
    Path to the dictionary file.

    Default: /usr/share/dict/american-english

  plugins.Wordgames.wordRegexp:
    A regular expression defining what a valid word looks like.  This will
    be used to filter words from the dictionary file that contain undesirable
    characters (proper names, hyphens, accents, etc.).  You will probably have
    to quote the string when setting, e.g.:

       @config plugins.Wordgames.wordRegexp "^[a-x]+$"
       (No words containing 'y' or 'z' would be allowed by this.)

    Default: ^[a-z]+$

Commands:

  wordshrink [difficulty]
    Start a new WordShrink game.  Difficulty values: [easy] medium hard evil

  wordtwist [difficulty]
    Start a new WordTwist game.  Difficulty values: [easy] medium hard evil

  wordquit
    Give up on any currently running game.

Game Rules:

A puzzle will be presented in the form a > --- > --- > d, and your job is to
come up with a response of the form b > c.  (You can optionally include the
start and end words in your response, as long as each word is separated by a
greater-than sign.)

In WordShrink, you remove one letter from each successive word and rearrange
the letters to form a new word.  Example session:

  <mike> @wordshrink
  <supybot> WordShrink: lights > ----- > ---- > sit
  <supybot> (12 possible solutions)
  <mike> sight > this
  <supybot> WordShrink: mike got it!
  <supybot> WordShrink: lights > sight > this > sit
  <ben> lights > hilts > hits > sit
  <supybot> ben: Your solution is also valid.

In WordTwist, you change exactly one letter in each successive word to form a
new word (no rearranging).  Example session:

  <mike> @wordtwist medium
  <supybot> WordTwist: mass > ---- > ---- > ---- > jade
  <supybot> (5 possible solutions)
  <mike> mars > mare > made
  <supybot> WordTwist: mike got it!
  <supybot> WordTwist: mass > mars > mare > made > jade

Credit:

Copyright 2012 Mike Mueller <mike@subfocal.net>
Released under the WTF public license: http://sam.zoy.org/wtfpl/

Thanks to Ben Schomp <ben@benschomp.com> for the inspiration.
Languages
Python 98.6%
HTML 1.4%