The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Acme::Affinity - Compute the affinity between two people

VERSION

version 0.0104

SYNOPSIS

  use Acme::Affinity;

  my %arguments = ( questions => [], importance => {}, me => [], you => [] );

  my $affinity = Acme::Affinity->new(%arguments);

  my $score = $affinity->score();

DESCRIPTION

An Acme::Affinity object computes the relationship affinity between two people based on a common list of questions and answers and their weighted importance.

ATTRIBUTES

questions

A list of hash references with question keys and answer array references.

Example:

  [ { 'how messy are you' => [ 'very messy', 'average', 'very organized' ] },
    { 'do you like to be the center of attention' => [ 'yes', 'no' ] },
  ]

importance

A hash reference with importance level keys and weight values.

Default:

  { 'irrelevant'         => 0,
    'a little important' => 1,
    'somewhat important' => 10,
    'very important'     => 50,
    'mandatory'          => 250,
  }

me

An array reference triple of question responses, desired responses and importance levels for person A.

Example:

  [ # Me                You               Importance
    [ 'very organized', 'very organized', 'very important' ],
    [ 'no',             'no',             'a little important' ],
  ]

you

An array reference triple of question responses, desired responses and importance levels for person B.

Example:

  [ [ 'very organized', 'average', 'a little important' ],
    [ 'yes',            'no',      'somewhat important' ],
  ]

METHODS

new()

  my $affinity = Acme::Affinity->new(%arguments);

Create a new Acme::Affinity object.

score()

  my $score = $affinity->score();

Compute the affinity score for the two given people.

SEE ALSO

Moo

Math::BigRat

https://www.youtube.com/watch?v=m9PiPlRuy6E

AUTHOR

Gene Boggs <gene@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2019 by Gene Boggs.

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