Dinesman's multiple-dwelling problem: Difference between revisions

Content added Content deleted
m (→‎{{header|Perl}}: revised where 'warnings' pragma used)
Line 2,510: Line 2,510:
<lang perl>use strict;
<lang perl>use strict;
use warnings;
use warnings;
use feature qw(state say);
use feature <state say>;
use List::Util 1.33 qw(pairmap);
use List::Util 1.33 qw(pairmap);
use Algorithm::Permute qw(permute);
use Algorithm::Permute qw(permute);
Line 2,549: Line 2,549:
my $pred = $predicates{$+{pred}};
my $pred = $predicates{$+{pred}};
{ no warnings;
my $expr = '(' . sprintf($pred->[1], $id->($+{subj}),
$pred->[0] eq 'person' ? $id->($+{obj}) : $+{obj}). ')';
my $expr = '(' . sprintf($pred->[1], $id->($+{subj}),
$expr = '!' . $expr if $+{not};
$pred->[0] eq 'person' ? $id->($+{obj}) : $+{obj}). ')';
$expr = '!' . $expr if $+{not};
push @expressions, $expr;
push @expressions, $expr;
}
}
}
my @f = 1..$i;
my @f = 1..$i;
eval 'no warnings "numeric";
eval '
permute {
permute {
say join(", ", pairmap { "$f[$b] $a" } %ids)
say join(", ", pairmap { "$f[$b] $a" } %ids)