23 lines
823 B
Perl
Executable File
23 lines
823 B
Perl
Executable File
#!/usr/bin/perl
|
|
open STDOUT, "|sqlite3" or die "Cannot fork sqlite";
|
|
print "
|
|
create table number(x integer, y1 integer, y2 integer, n integer);
|
|
create table symbol(x integer, y integer, sym text);
|
|
create view adjacent as
|
|
select number.n, number.x, number.y1, symbol.s, symbol.x, symbol.y
|
|
from symbol, number
|
|
where
|
|
symbol.x between number.x - 1 and number.x + 1
|
|
and y >= y1-1
|
|
and y <= y2+1
|
|
;
|
|
begin;
|
|
";
|
|
while(<>) {
|
|
print "insert into number values ($., $-[0], $+[0], $&);\n" while /\d+/g;
|
|
print "insert into symbol values ($., $-[0], '$&');\n" while /[^.0-9\n]/g;
|
|
}
|
|
print "commit;\n";
|
|
print "select sum(n) from number where (number.x, number.y1) in (SELECT number.x, number.y1 from symbol, number where y >= y1-1 and y <= y2+1 and symbol.x between number.x - 1 and number.x + 1);";
|
|
print "select
|