#!/usr/local/bin/perl -w use strict; my $n = $ARGV[0]; my $np1 = $n+1; my $nsqrd = $n*$n; my $magicn = $n*($n*$n+1)/2; print "num(1..$n).\n"; print "data(1..$nsqrd).\n"; print "\n"; for ( my $i = 1; $i <= $nsqrd; $i++ ) { print "weight wt($i) = $i.\n"; } print "\n"; print "1{sqr(I,J,D):num(I;J)}1 :- data(D).\n"; print "1{sqr(I,J,D):data(D)}1 :- num(I;J).\n"; print "\n"; print "$magicn [ sqr(I, J, A) : num(J) : data(A) = weight(wt(A)) ] $magicn :- num(I).\n"; print "$magicn [ sqr(I, J, A) : num(I) : data(A) = weight(wt(A)) ] $magicn :- num(J).\n"; print "$magicn [ sqr(I, I, A) : num(I) : data(A) = weight(wt(A)) ] $magicn.\n"; print "$magicn [ sqr(I, $np1-I, A) : num(I;$np1-I) : data(A) = weight(wt(A)) ] $magicn.\n";