view release on metacpan or search on metacpan
app/mm-eda.cgi view on Meta::CPAN
called with parameter C<code> it will call the algorithm and produce
the solution. It usually takes less than a second, but your mileage
may vary depending on the server and Perl version.
=cut
use strict;
use warnings;
use lib qw(/home/jmerelo/proyectos/CPAN/Algorithm_Mastermind/lib
/home/jmerelo/proyectos/CPAN/Algorithm-Evolutionary/lib
..);
use CGI qw(:standard :form);
use Algorithm::MasterMind qw(check_combination);
use Algorithm::MasterMind::EDA;
print header();
app/run_experiment.pl view on Meta::CPAN
#!/usr/bin/perl
use strict;
use warnings;
use lib qw(../lib ../../Algorithm-Evolutionary/lib);
use YAML qw(LoadFile);
use IO::YAML;
use DateTime;
use Algorithm::MasterMind qw( check_combination );
my $config_file = shift || die "Usage: $0 <configfile.yaml>\n";
$config_file .= ".yaml" if ! ($config_file =~ /\.ya?ml$/);
app/run_experiment_all.pl view on Meta::CPAN
#!/usr/bin/perl
use strict;
use warnings;
use lib qw(../lib ../../Algorithm-Evolutionary/lib);
use YAML qw(LoadFile);
use IO::YAML;
use DateTime;
use Algorithm::Combinatorics qw(variations_with_repetition);
use Algorithm::MasterMind qw( check_combination );
my $config_file = shift || die "Usage: $0 <configfile.yaml>\n";
lib/Algorithm/MasterMind.pm view on Meta::CPAN
use Algorithm::Combinatorics qw(variations_with_repetition);
#use Memoize;
#memoize( "check_rule" );
our @ISA = qw(Exporter);
our @EXPORT_OK = qw( check_combination partitions entropy random_string
response_as_string);
use lib qw( ../../lib ../lib ../../../lib );
# Module implementation here
sub new {
my $class = shift;
my $options = shift || croak "Need options here in Algorithm::MasterMind::New\n";
my $self = { _rules => [],
_evaluated => 0,
lib/Algorithm/MasterMind/CGA_Partitions.pm view on Meta::CPAN
package Algorithm::MasterMind::CGA_Partitions;
use warnings;
use strict;
use Carp;
use lib qw(../../lib
../../../lib
../../../../Algorithm-Evolutionary/lib
../../../Algorithm-Evolutionary/lib
../../Algorithm-Evolutionary/lib);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.3 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind::Canonical_GA';
use Algorithm::MasterMind qw(partitions);
lib/Algorithm/MasterMind/Canonical_GA.pm view on Meta::CPAN
package Algorithm::MasterMind::Canonical_GA;
use warnings;
use strict;
use Carp;
use lib qw(../../lib ../../../../Algorithm-Evolutionary/lib/
../../../lib
../../Algorithm-Evolutionary/lib/);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.1 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind::Evolutionary_Base';
use Algorithm::Evolutionary::Op::String_Mutation;
use Algorithm::Evolutionary::Op::QuadXOver;
use Algorithm::Evolutionary::Op::CanonicalGA;
lib/Algorithm/MasterMind/Consistent_Set.pm view on Meta::CPAN
package Algorithm::MasterMind::Consistent_Set;
use warnings;
use strict;
use Carp;
use lib qw(../../lib ../../../../Algorithm-Evolutionary/lib/
../../Algorithm-Evolutionary/lib/
../../../lib);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.8 $ =~ /(\d+)\.(\d+)/g;
use Algorithm::MasterMind qw(partitions);
use Algorithm::MasterMind::Secret;
sub new {
my $class = shift;
lib/Algorithm/MasterMind/EDA.pm view on Meta::CPAN
package Algorithm::MasterMind::EDA;
use warnings;
use strict;
use Carp;
use lib qw(../../lib
../../../lib
../../../../Algorithm-Evolutionary/lib
../../../Algorithm-Evolutionary/lib
../../Algorithm-Evolutionary/lib);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.13 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind::Evolutionary_Base';
use Algorithm::MasterMind qw(entropy);
lib/Algorithm/MasterMind/EDA_Partitions.pm view on Meta::CPAN
package Algorithm::MasterMind::EDA_Partitions;
use warnings;
use strict;
use Carp;
use lib qw(../../lib
../../../lib
../../../../Algorithm-Evolutionary/lib
../../../Algorithm-Evolutionary/lib
../../Algorithm-Evolutionary/lib);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.3 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind::EDA';
use Algorithm::MasterMind qw(partitions);
lib/Algorithm/MasterMind/Evo.pm view on Meta::CPAN
package Algorithm::MasterMind::Evo;
use warnings;
use strict;
use Carp;
use lib qw(../../lib ../../../../Algorithm-Evolutionary/lib/
../../Algorithm-Evolutionary/lib/
../../../lib);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.14 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind::Evolutionary_Base';
use Algorithm::MasterMind qw(partitions);
use Algorithm::Evolutionary qw(Op::String_Mutation
Op::Permutation
lib/Algorithm/MasterMind/EvoRank.pm view on Meta::CPAN
package Algorithm::MasterMind::EvoRank;
use warnings;
use strict;
use Carp;
use lib qw(../../lib ../../../../Algorithm-Evolutionary/lib/
../../Algorithm-Evolutionary/lib/
../../../lib);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.15 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind::Evolutionary_Base';
use Algorithm::MasterMind qw(partitions);
use Algorithm::Evolutionary qw(Op::QuadXOver
lib/Algorithm/MasterMind/Evolutionary.pm view on Meta::CPAN
package Algorithm::MasterMind::Evolutionary;
use warnings;
use strict;
use Carp;
use lib qw(../../lib ../../../../Algorithm-Evolutionary/lib/
../../../lib
../../Algorithm-Evolutionary/lib/);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.8 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind::Evolutionary_Base';
use Algorithm::Evolutionary::Op::String_Mutation;
use Algorithm::Evolutionary::Op::Permutation;
use Algorithm::Evolutionary::Op::Uniform_Crossover;
lib/Algorithm/MasterMind/Evolutionary_Base.pm view on Meta::CPAN
package Algorithm::MasterMind::Evolutionary_Base;
use warnings;
use strict;
use Carp;
use lib qw(../../lib
../../../lib
../../../../Algorithm-Evolutionary/lib/
../../../Algorithm-Evolutionary/lib/
../../Algorithm-Evolutionary/lib/
../Algorithm-Evolutionary/lib/);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.13 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind';
lib/Algorithm/MasterMind/Evolutionary_MO.pm view on Meta::CPAN
package Algorithm::MasterMind::Evolutionary_MO;
use warnings;
use strict;
use Carp;
use lib qw(../../lib ../../../../Algorithm-Evolutionary/lib/ ../../Algorithm-Evolutionary/lib/);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.1 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind';
use Algorithm::MasterMind qw(entropy);
use Algorithm::Evolutionary::Op::String_Mutation;
# use Algorithm::Evolutionary::Op::Permutation;
use Algorithm::Evolutionary::Op::Crossover;
lib/Algorithm/MasterMind/Evolutionary_Partitions.pm view on Meta::CPAN
package Algorithm::MasterMind::Evolutionary_Partitions;
use warnings;
use strict;
use Carp;
use lib qw(../../lib ../../../../Algorithm-Evolutionary/lib/
../../Algorithm-Evolutionary/lib/
../../../lib);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.6 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind::Evolutionary';
use Algorithm::MasterMind qw(partitions);
use Algorithm::Evolutionary::Op::String_Mutation;
lib/Algorithm/MasterMind/MOGA.pm view on Meta::CPAN
package Algorithm::MasterMind::MOGA;
use warnings;
use strict;
use Carp;
use lib qw( ../../../lib
../../lib
../../../../Algorithm-Evolutionary/lib
../../../Algorithm-Evolutionary/lib
../../Algorithm-Evolutionary/lib);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.8 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind';
use Algorithm::MasterMind qw(entropy);
lib/Algorithm/MasterMind/Partition.pm view on Meta::CPAN
package Algorithm::MasterMind::Partition;
use warnings;
use strict;
use Carp;
use lib qw(../../lib ../../../lib);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.2 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind';
use Algorithm::MasterMind qw( partitions );
sub initialize {
my $self = shift;
my $options = shift;
lib/Algorithm/MasterMind/Partition/Most.pm view on Meta::CPAN
package Algorithm::MasterMind::Partition::Most;
use warnings;
use strict;
use Carp;
use lib qw(../../lib ../../../lib ../../../../lib);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.1 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind::Partition';
use Algorithm::MasterMind qw( partitions );
sub compute_next_string {
my $self = shift;
my $partitions = shift || croak "No partitions";
lib/Algorithm/MasterMind/Partition_Most.pm view on Meta::CPAN
package Algorithm::MasterMind::Partition_Most;
use warnings;
use strict;
use Carp;
use lib qw(../../lib ../../../lib);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.2 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind';
use Algorithm::MasterMind::Consistent_Set;
sub initialize {
my $self = shift;
my $options = shift;
for my $o ( keys %$options ) {
lib/Algorithm/MasterMind/Partition_Worst.pm view on Meta::CPAN
package Algorithm::MasterMind::Partition_Worst;
use warnings;
use strict;
use Carp;
use lib qw(../../lib ../../../lib);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.3 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind';
use Algorithm::MasterMind qw( partitions );
sub initialize {
my $self = shift;
my $options = shift;
lib/Algorithm/MasterMind/Random.pm view on Meta::CPAN
package Algorithm::MasterMind::Random;
use warnings;
use strict;
use Carp;
use lib qw(../../lib);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.2 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind';
sub initialize {
my $self = shift;
my $options = shift;
for my $o ( keys %$options ) {
$self->{"_$o"} = $options->{$o};
lib/Algorithm/MasterMind/Sequential.pm view on Meta::CPAN
package Algorithm::MasterMind::Sequential;
use warnings;
use strict;
use Carp;
use lib qw(../../lib);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.6 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind';
use Algorithm::Combinatorics qw(variations_with_repetition);
sub initialize {
my $self = shift;
my $options = shift || croak "Need options here";
lib/Algorithm/MasterMind/Sequential_Alt.pm view on Meta::CPAN
package Algorithm::MasterMind::Sequential_Alt;
use warnings;
use strict;
use Carp;
use lib qw(../../lib);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.3 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind';
use Algorithm::Combinatorics qw(variations_with_repetition);
sub initialize {
my $self = shift;
my $options = shift || croak "Need options here";
for my $o ( keys %$options ) {
lib/Algorithm/MasterMind/Test.pm view on Meta::CPAN
package Algorithm::MasterMind::Test;
use warnings;
use strict;
use Carp;
use lib qw(../../lib);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.4 $ =~ /(\d+)\.(\d+)/g;
use base 'Algorithm::MasterMind';
sub initialize {
my $self = shift;
my $options = shift;
for my $o ( keys %$options ) {
$self->{"_$o"} = $options->{$o};
lib/Algorithm/MasterMind/Test_Solver.pm view on Meta::CPAN
package Algorithm::MasterMind::Test_Solver;
use warnings;
use strict;
use Carp;
use lib qw(../../lib ../../../lib);
our $VERSION = sprintf "%d.%03d", q$Revision: 1.4 $ =~ /(\d+)\.(\d+)/g;
use base 'Exporter';
use Algorithm::MasterMind qw(check_combination);
use Test::More;
our @EXPORT_OK = qw( solve_mastermind );
t/00_functions.t view on Meta::CPAN
#!perl
use strict;
use warnings;
use Test::More;
use lib qw( lib ../lib ../../lib ); #Just in case we are testing it in-place
BEGIN {
use_ok( 'Algorithm::MasterMind' );
use_ok( 'Algorithm::MasterMind::Secret');
use_ok( 'Algorithm::MasterMind::Test' );
BEGIN { use_ok('Algorithm::MasterMind', qw(check_combination)); };
}
diag( "Testing Algorithm::Mastermind $Algorithm::MasterMind::VERSION, Perl $], $^X" );
t/00_sequential.t view on Meta::CPAN
#!perl
use Test::More qw( no_plan ); #Random initial string...
use lib qw( lib ../lib ../../lib ); #Just in case we are testing it in-place
use Algorithm::MasterMind qw(check_combination);
BEGIN {
use_ok( 'Algorithm::MasterMind::Sequential' );
}
my $secret_code = 'FAFA';
my @alphabet = qw( A B C D E F );
my $solver = new Algorithm::MasterMind::Sequential { alphabet => \@alphabet,
t/01_random.t view on Meta::CPAN
#!perl
use Test::More qw( no_plan ); #Random initial string...
use lib qw( lib ../lib ../../lib ); #Just in case we are testing it in-place
use Algorithm::MasterMind qw(check_combination);
BEGIN {
use_ok( 'Algorithm::MasterMind::Random' );
}
my $secret_code = 'EAFC';
my @alphabet = qw( A B C D E F );
my $solver = new Algorithm::MasterMind::Random { alphabet => \@alphabet,
#!perl
use Test::More qw( no_plan ); #Random initial string...
use lib qw( lib ../lib ../../lib ../Algorithm-Evolutionary/lib ); #Just in case we are testing it in-place
use Algorithm::MasterMind qw(check_combination);
BEGIN {
use_ok( 'Algorithm::MasterMind::EDA' );
}
my $secret_code = 'EAFC';
my $population_size = 200;
my @alphabet = qw( A B C D E F );
t/03_sequential_alt.t view on Meta::CPAN
#!perl
use Test::More qw( no_plan ); #Random initial string...
use lib qw( lib ../lib ../../lib ); #Just in case we are testing it in-place
use Algorithm::MasterMind qw(check_combination);
BEGIN {
use_ok( 'Algorithm::MasterMind::Sequential_Alt' );
}
my $secret_code = 'ADCB';
my @alphabet = qw( A B C D E F );
my $solver = new Algorithm::MasterMind::Sequential_Alt { alphabet => \@alphabet,