#!/usr/bin/perl open IN, "<".$ARGV[0] or die "Cannot open $1"; while (){ $linea++; chomp; if ($linea ==1){ if (/MAX/ || /max/ || /Max/){ $tipo = 1; }else { $tipo =0; } }else{ @lin = split /\s+/ ; $num=0; for $i (@lin){ $num++; $costes[$linea-1][$num] = $i; } $n = $num; } } close IN; $m = $linea-2; for $i (1 .. $m){ $ofer[$i]=$costes[$i][$n+1]; $costes[$i][$n+1]=""; $sumof += $ofer[$i]; } for $i (1..$n){ $dem[$i]=$costes[$linea-1][$i]; $costes[$linea-1][$i]=""; $sumde += $dem[$i]; } if ($sumof > $sumde){ $n++; $dem[$n]=$sumof-$sumde; $ddem[$n]=$dem[$n]; for $i (1..$m){ $costes[$i][$n]=0; } }elsif ($sumof < $sumde){ $m++; $ofer[$m]=$sumde-$sumof; $oofer[$m]=$ofer[$m]; for $j (1 .. $n){ $costes[$m][$j]=0; } } for $i (1..$m){ for $j (1..$n){ if ($tipo==1){ $c[$i][$j]=-$costes[$i][$j]; }else{ $c[$i][$j]=$costes[$i][$j]; } } } print "$m , $n\n"; for $i (1..$m) { for $j (1..$n) { print "$costes[$i][$j] "; } print " $ofer[$i]\n"; } print "@dem\n"; $d = `date`; $d =~ s/ //g; $d =~ s/\://g; open OUT , ">$d" or die "Cannot open $d"; if ($tipo==1){ print OUT "max: "; }else{ print OUT "min:"; } for $i (1.. $m){ for $j (1..$n){ print OUT "+$costes[$i][$j]*X$i"."s$j"; } } print OUT ";\n"; for $i (1.. $m){ for $j (1..$n){ print OUT "+X$i"."s$j"; } print OUT "=$ofer[$i];\n"; } for $j (1.. $n){ for $i (1..$m){ print OUT "+X$i"."s$j"; } print OUT "=$dem[$j];\n"; } print OUT "int "; for $j (1.. $n){ for $i (1..$m){ print OUT "X$i"."s$j"; if ($j!=$n || $i!=$m ) { print OUT ","; } } } print OUT ";\n"; close OUT; __END__