23 push @perms, $t.$vals[0];
25 for my $i (0 .. $#vals) {
27 my $u = splice @v1, $i, 1;
28 do_perms("$t$u", @v1);
33 do_perms('', qw(a b c d e f g));
36 my ($val, $perm) = @_;
37 eval "\$val =~ y/abcdefg/$perm/";
38 join('', sort split //, $val);
45 my ($inv, $outv) = split /\s+\|\s+/;
46 my (@in) = sort { length $a <=> length $b } split /\s+/, $inv;
47 # say "$inv => ", join(' ', @in);
48 my (@out) = split /\s+/, $outv;
50 PERM: for my $perm (@perms) {
52 my $ni = permute($i, $perm);
53 next PERM if !defined $digits{$ni};
57 my $no = permute($o, $perm);