18 for my $m1 (0 .. $#m) {
19 for my $m2 (0 .. $#m) {
22 $v[$m1][$c]++ if $m[$m1][$c] < $m[$m2][$c];
23 $v[$m1][$c]-- if $m[$m1][$c] > $m[$m2][$c];
26 for my $m1 (0 .. $#m) {
28 $m[$m1][$c] += $v[$m1][$c];
33 my $state = join(',', (map { $_->[$c] } @m), (map { $_->[$c] } @v));
34 next unless $states[$c]->{$state}++;
45 ($n1, $n2) = ($n2, $n1) if $n1 < $n2;
51 say "reps: ", join(',', @reps);
52 my $m = $reps[0]*$reps[1]/gcd($reps[0], $reps[1]);
53 $m = $m*$reps[2]/gcd($m, $reps[2]);
57 for my $m1 (0 .. $#m) {
60 $pot += abs($m[$m1][$c]);
61 $kin += abs($v[$m1][$c]);