Allegato "rip.pl"
Scarica 1 #!/usr/bin/env perl
2
3 $m=shift;
4 $n=shift;
5
6 $m > 0 and $n > 0 or die "Usage: $0 m n\n";
7 @formula=();
8
9 # So: xi,j,k ~ (k-1)*n*n + (j-1)*n+i
10
11 for($k=1; $k <= $m; $k++) {
12 @clause=();
13 for($i=1; $i <= $n; $i++) {
14 for($j=1; $j <= $n; $j++) {
15 push(@clause, ($k-1)*$n*$n + ($j-1)*$n+$i);
16 }
17 }
18 push(@formula,join(" ",@clause) . " 0");
19 }
20
21
22 for($i=1; $i <= $n; $i++) {
23 for($j=1; $j <= $n; $j++) {
24 for($k=1; $k <= $m; $k++) {
25 for($l=1; $l <= $m; $l++) {
26 if($k != $l) {
27 push(@formula,sprintf("-%d -%d 0",
28 ($k-1)*$n*$n + ($j-1)*$n+$i ,
29 ($l-1)*$n*$n + ($j-1)*$n+$i));
30 }
31 }
32 }
33 }
34 }
35
36 for($i=1; $i <= $n; $i++) {
37 for($j=1; $j <= $n; $j++) {
38 for($k=1; $k <= $m; $k++) {
39 for($l=1; $l <= $n; $l++) {
40 for($h=1; $h <= $n; $h++) {
41 if(!($l==$i && $h==$j)) {
42 push(@formula,sprintf("-%d -%d 0",
43 ($k-1)*$n*$n + ($j-1)*$n+$i ,
44 ($k-1)*$n*$n + ($h-1)*$n+$l));
45 }
46 }
47 }
48 }
49 }
50 }
51
52 for($i=1; $i <= $n; $i++) {
53 for($j=1; $j <= $n; $j++) {
54 for($k=1; $k <= $m; $k++) {
55 for($l=1; $l <= $n; $l++) {
56 for($h=1; $h <= $m; $h++) {
57 if(!($l==$i && $h==$k)) {
58 push(@formula,sprintf("-%d -%d 0",
59 ($k-1)*$n*$n + ($j-1)*$n+$i ,
60 ($h-1)*$n*$n + ($j-1)*$n+$l));
61 }
62 }
63 }
64 }
65 }
66 }
67
68 for($i=1; $i <= $n; $i++) {
69 for($j=1; $j <= $n; $j++) {
70 for($k=1; $k <= $m; $k++) {
71 for($l=1; $l <= $n; $l++) {
72 for($h=1; $h <= $m; $h++) {
73 if(!($l==$j && $h==$k)) {
74 push(@formula,sprintf("-%d -%d 0",
75 ($k-1)*$n*$n + ($j-1)*$n+$i ,
76 ($h-1)*$n*$n + ($l-1)*$n+$i));
77 }
78 }
79 }
80 }
81 }
82 }
83
84
85 printf("p cnf %d %d\n",$m*$n*$n,$#formula+1);
86 foreach (@formula)
87 {
88 print "$_\n";
89 }
Allegati
Non รจ consentito inserire allegati su questa pagina.