]> mj.ucw.cz Git - eval.git/blobdiff - bin/mo-report
Implemented general mechanism for overriding variables for specific
[eval.git] / bin / mo-report
index 6272ccdd52398fda61b6ce2f68139bb9ee8e0156..57828b65c209ecd761b19f07fdc8f1230424e82e 100755 (executable)
@@ -8,20 +8,41 @@ foreach my $user (`cd testing && ls`) {
        chomp $user;
        print "$user:";
        open REP, ">testing/$user/REPORT" or die;
-       print REP "Evaluation report for CEOI 2007 Day 1\n\n";
+       print REP "Evaluation report for CEOI 2007 Day 2\n\n";
        my $total = 0;
        foreach my $task (@ARGV) {
                print REP "### Task $task ###\n\n";
                if (open PTS, "testing/$user/$task/points") {
-                       my $tt = 0;
+                       my %merged_pts = ();
+                       my %split_comm = ();
                        while (<PTS>) {
                                chomp;
                                my ($test, $pts, $comm) = /(\S+)\s+(\S+)\s+(.*)/;
-                               $comm =~ s/\.$//;
-                               printf REP "Test %2s: %2d points (%s)\n", $test, $pts, $comm;
-                               $tt += $pts;
+                               my $merged = $test;
+                               $merged =~ s/[^0-9]//;
+                               if (!defined($merged_pts{$merged}) || $merged_pts{$merged} > $pts) {
+                                       $merged_pts{$merged} = $pts;
+                               }
+                               $split_comm{$merged}{$test} = $comm;
                        }
                        close PTS;
+                       my $tt = 0;
+                       foreach my $merged (sort { $a <=> $b } keys %merged_pts) {
+                               printf REP "Test %2s: %2d points", $merged, $merged_pts{$merged};
+                               $tt += $merged_pts{$merged};
+                               my @k = sort keys %{$split_comm{$merged}};
+                               if (@k == 1) {
+                                       print REP " -- ", $split_comm{$merged}{$k[0]}, "\n";
+                               } else {
+                                       print REP " -- ";
+                                       my $cc = 0;
+                                       foreach my $t (@k) {
+                                               $cc++ and print REP ", ";
+                                               print REP "$t: $split_comm{$merged}{$t}";
+                                       }
+                                       print REP "\n";
+                               }
+                       }
                        print REP "\nTOTAL: $tt points\n\n";
                        $total += $tt;
                        print " $tt";
@@ -30,7 +51,7 @@ foreach my $user (`cd testing && ls`) {
                        print " -";
                }
        }
-       print REP "### TOTAL FOR DAY 1 ###\n\n";
+       print REP "### TOTAL FOR DAY 2 ###\n\n";
        print REP "$total points\n";
        print REP "\n\n(generated on ", strftime("%Y-%m-%d %H:%M:%S", localtime), ")\n";
        close REP;