NAME

Acme::Affinity - Compute the affinity between two people

VERSION

version 0.0103

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.