NAME
   Algorithm::BestChoice - Choose the best

VERSION
   Version 0.01

SYNOPSIS
       # Find my favorite food based on color
       my $chooser = Algorithm::BestChoice->new;
       $chooser->add( match => red, value => cherry, rank => 1 )
       $chooser->add( match => red, value => apple, rank => 10 ) # Like apples
       $chooser->add( match => red, value => strawberry, rank => -5 ) # Don't like strawberries
       $chooser->add( match => purple, value => grape, rank => 20 ) # Delicious
       $chooser->add( match => yellow, value => banana )
       $chooser->add( match => yellow, value => lemon rank => -5 ) # Too sour

       my $favorite;
       $favorite = $chooser->best( red ) # apple is the favorite red
       $favorite = $chooser->best( [ red, yellow, purple ] ) # grape is the favorite among red, yellow, and purple

DESCRIPTION
   An Algorithm::BestChoice object is similar to a hash, except it returns
   a result based on a given key AND relative ranking. That is, you can
   associate multiple values with a single key, and differentiate them by
   using a rank (or weight).

METHODS
 Algorithm::BestChoice->new
   Create and return a new Algorithm::BestChoice object

 $chooser->add( ... )
   Add a possible choice to the chooser

   The arguments are:

       match       The key for the choice, can be a string or a regular expression
       value       The value to associate with the key (what is returned by ->best)
       rank        An optional numeric weight, the default is 0 (>0 is better, <0 is worse)

 $value = $chooser->best( <criterion> )
   Given criterion, ->best will return the value that 1. has a matching
   matcher and 2. has the highest rank

AUTHOR
   Robert Krimen, "<rkrimen at cpan.org>"

BUGS
   Please report any bugs or feature requests to "bug-algorithm-bestchoice
   at rt.cpan.org", or through the web interface at
   <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Algorithm-BestChoice>. I
   will be notified, and then you'll automatically be notified of progress
   on your bug as I make changes.

SUPPORT
   You can find documentation for this module with the perldoc command.

       perldoc Algorithm::BestChoice

   You can also look for information at:

   *   RT: CPAN's request tracker

       <http://rt.cpan.org/NoAuth/Bugs.html?Dist=Algorithm-BestChoice>

   *   AnnoCPAN: Annotated CPAN documentation

       <http://annocpan.org/dist/Algorithm-BestChoice>

   *   CPAN Ratings

       <http://cpanratings.perl.org/d/Algorithm-BestChoice>

   *   Search CPAN

       <http://search.cpan.org/dist/Algorithm-BestChoice/>

ACKNOWLEDGEMENTS
COPYRIGHT & LICENSE
   Copyright 2009 Robert Krimen, all rights reserved.

   This program is free software; you can redistribute it and/or modify it
   under the same terms as Perl itself.