use strict; use Data::Dumper; my @inputlist; my @outputlist; my @list; sub AddInput { my $name = $_[0]; # push @list, { name => $name, inputs => "-" }; push @list, { name => $name }; push @outputlist, $name; } sub AddOutput { my $name = $_[0]; # push @list, { name => $name, outputs => "-" }; push @list, { name => $name }; push @inputlist, $name; } sub AddNeuron { my $name = $_[0]; push @list, { name => $name }; push @inputlist, $name; push @outputlist, $name; } sub AddConnection { my ($from, $to) = @_; for my $l ( @list ) { if ( $l->{"name"} eq $from ) { push @{$l->{"outputs"}}, $to; } if ( $l->{"name"} eq $to ) { push @{$l->{"inputs"}}, $from; } } } sub AddRandomConnection { my @arr; my $i = scalar(@inputlist); print "we have $i elements to choose from\n"; my $rand_i = int(rand($i)); my $from = $inputlist[$rand_i]; print "we picked $rand_i : $from\n"; my $o = scalar(@outputlist); print "we have $i elements to choose from\n"; my $rand_o = int(rand($o)); my $to = $outputlist[$rand_o]; print "we picked $rand_o : $to\n"; #TODO: need to make sure you can't come to and from same node for my $l ( @list ) { if ( $l->{"name"} eq $from ) { push @{$l->{"outputs"}}, $to; } if ( $l->{"name"} eq $to ) { push @{$l->{"inputs"}}, $from; } } } AddInput("I1"); AddInput("I2"); #AddInput("I3"); AddOutput("O1"); AddOutput("O2"); #AddNeuron("N1"); #AddNeuron("N2"); print Data::Dumper->Dump([@list]); print "Add a direct connection\n"; AddConnection("I1", "O2"); print Data::Dumper->Dump([@list]); print "Add a random connection\n"; AddRandomConnection(); print Data::Dumper->Dump([@list]);
$VAR1 = { 'name' => 'I1' }; $VAR2 = { 'name' => 'I2' }; $VAR3 = { 'name' => 'O1' }; $VAR4 = { 'name' => 'O2' }; Add a direct connection $VAR1 = { 'outputs' => [ 'O2' ], 'name' => 'I1' }; $VAR2 = { 'name' => 'I2' }; $VAR3 = { 'name' => 'O1' }; $VAR4 = { 'name' => 'O2', 'inputs' => [ 'I1' ] }; Add a random connection we have 2 elements to choose from we picked 1 : O2 we have 2 elements to choose from we picked 1 : I2 $VAR1 = { 'outputs' => [ 'O2' ], 'name' => 'I1' }; $VAR2 = { 'name' => 'I2', 'inputs' => [ 'O2' ] }; $VAR3 = { 'name' => 'O1' }; $VAR4 = { 'outputs' => [ 'I2' ], 'name' => 'O2', 'inputs' => [ 'I1' ] };
In reply to Re^2: Array of hashes of Arrays
by thekestrel
in thread Array of hashes of Arrays
by thekestrel
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |