]> mj.ucw.cz Git - moe.git/blobdiff - mop/score/mo-score-mop.sh
Box: Let the 32-bit version refuse to run on 64-bit kernels
[moe.git] / mop / score / mo-score-mop.sh
index 763d3dc9643ef89f73d188780080a960576033d6..44944a589873c790ffa62b2e0979800a1c418100 100755 (executable)
@@ -1,5 +1,7 @@
 #!/usr/bin/perl
 
+use List::Util qw(min);
+
 $tex = 0;
 $usage = "Usage: mo-score-mop [--tex] theoretical_tasks_nr praxis_tasks_nr task1 task2 ...";
 while (($arg = $ARGV[0]) =~ /^--([a-z]+)$/) {
@@ -26,7 +28,7 @@ close CT;
 print STDERR 0+keys %users, "\n";
 
 print STDERR "Scanning teoretical results... ";
-if (open (EX, "../mop/score/teorie.txt")) {
+if (open (EX, "teorie.txt")) {
        while (<EX>) {
                chomp;
                (/^$/ || /^#/) && next;
@@ -59,12 +61,23 @@ foreach $u (keys %users) {
                -f $tt || next;
                print STDERR "$u/$t ";
                open (X, $tt) || die "Unable to open $tt";
+               my %groups = ();
                while (<X>) {
                        chomp;
-                       /^\S+ (-?\d+)/ || die "Parse error: $_";
-                       $tasks{$u}{$t_num} += $1;
+                       my ($test, $pts) = /^(\S+) (-?\d+)/ or die "Parse error: $_";
+                       my $group = $test;
+                       $group =~ s{\D}{}g;
+                       if (defined $groups{$group}) {
+                               $groups{$group} = min($groups{$group}, $pts);
+                       } else {
+                               $groups{$group} = $pts;
+                       }
                }
                close X;
+
+               for my $g (keys %groups) {
+                       $tasks{$u}{$t_num} += $groups{$g};
+               }
        }
        closedir D;
 }
@@ -124,13 +137,13 @@ while ($i < @table) {
 print STDERR "OK\n";
 
 if ($tex) {
-        open HDR,"../mop/score/listina.hdr" or die "Cannot open file ../mop/score/listina.hdr with TeX template!";
+        open HDR,"listina.hdr" or die "Cannot open file listina.hdr with TeX template!";
        while (<HDR>) {print; }
        close HDR;
        
        foreach $r (@table) { print join('&',@$r), "\\cr\n";}
 
-        open FTR,"../mop/score/listina.ftr" or die "Cannot open file ../mop/score/listina.ftr with TeX template!";
+        open FTR,"listina.ftr" or die "Cannot open file listina.ftr with TeX template!";
        while (<FTR>) {print; }
        close FTR;
 } else {