Conway works (with sleeps)
[clump.git] / intermediare.pl
diff --git a/intermediare.pl b/intermediare.pl
new file mode 100644 (file)
index 0000000..91df8ae
--- /dev/null
@@ -0,0 +1,62 @@
+#!/usr/bin/perl
+use v5.14;
+use warnings;
+
+my @initial = (
+       [qw/1 1 1 0/],
+       [qw/0 0 0 0/],
+       [qw/0 0 0 0/],
+       [qw/0 0 0 0/],
+  );
+
+my @diffs = (
+       [-1,  0],
+       [-1,  1],
+       [0 ,  1],
+       [1 ,  1],
+       [1 ,  0],
+       [1 , -1],
+       [0 , -1],
+       [-1, -1]
+);
+
+sub sum_for_diff {
+       my ($diff) = @_;
+       my @result;
+       my ($dx, $dy) = @{$diffs[$diff]};
+       for my $i (0 .. 3) {
+               for my $j (0 .. 3) {
+                       my $ni = ($i + 4 + $dx) % 4;
+                       my $nj = ($j + 4 + $dy) % 4;
+                       $result[$i][$j] = $initial[$ni][$nj];
+               }
+       }
+#      say 'For diff ', $diff, ': ';
+#      say join ' ', @$_ for @result;
+       @result
+}
+
+use Data::Dumper;
+
+my @sum1;
+my @sum2;
+
+for my $x (qw/0 2 4 6/) {
+       @sum1 = sum_for_diff $x;
+       @sum2 = sum_for_diff ($x+1);
+
+       my ($sum1, $sum2, $sumA, $sumB) = (0, 0, 0, 0);
+       my $cnt = 0;
+       for my $i (0 .. 3) {
+               for my $j (0 .. 3) {
+                       my $sum = $sum1[$i][$j] + $sum2[$i][$j];
+                       $sum1 += $sum1[$i][$j] << $cnt;
+                       $sum2 += $sum2[$i][$j] << $cnt;
+                       $sumA += ($sum&1) << $cnt;
+                       $sumB += ($sum&2) << ($cnt - 1);
+                       $cnt++;
+               }
+       }
+
+       printf "%04X + %04X = %016b %016b\n", $sum1, $sum2, $sumA, $sumB;
+}
This page took 0.010531 seconds and 4 git commands to generate.