pachi_py/pachi/tools/pattern_spatial_show.pl (32 lines of code) (raw):
#!/usr/bin/perl
# pattern_spatial_show: Show given spatial dictionary entry on board
my $f = "patterns.spat";
my $id = $ARGV[0];
my @ofs = ();
open D, "$f" or die "$f: $!";
while (<D>) {
chomp;
if (s/^# Point order: d=(\d+) //) {
my $d = $1; next if ($d < 1);
# XXX: Distances must be in proper order!
s/ *$//;
push @ofs, map { [ split(/,/, $_) ] } split(/ /, $_);
# print "#### $_\n";
# print "[$d] ($#ofs) " . join(' ', map { $_->[0].",".$_->[1] } @ofs) . "\n";
next;
}
/^#/ and next;
my ($lid, $d, $pat, @hashes) = split (/\s+/, $_);
if ($id == $lid) {
print "$d $pat\n";
my @b;
my @pc = split (//, $pat);
for my $i (0 .. $#pc) {
# print "$i: $pc[$i] -> $ofs[$i][1],$ofs[$i][0]\n";
$b[$d + $ofs[$i][1]][$d + $ofs[$i][0]] = $pc[$i];
}
$b[$d][$d] = '_';
for my $y (0 .. 2 * $d) {
for my $x (0 .. 2 * $d) {
print $b[2 * $d - $y][$x] || ' ';
print ' ';
}
print "\n";
}
last;
}
}