]> mj.ucw.cz Git - eval.git/blob - bin/mo-report
Comment on obsolescence of this script.
[eval.git] / bin / mo-report
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5 use POSIX;
6
7 foreach my $user (`cd testing && ls`) {
8         chomp $user;
9         print "$user:";
10         open REP, ">testing/$user/REPORT" or die;
11         print REP "Evaluation report for CEOI 2007 Day 2\n\n";
12         my $total = 0;
13         foreach my $task (@ARGV) {
14                 print REP "### Task $task ###\n\n";
15                 if (open PTS, "testing/$user/$task/points") {
16                         my %merged_pts = ();
17                         my %split_comm = ();
18                         while (<PTS>) {
19                                 chomp;
20                                 my ($test, $pts, $comm) = /(\S+)\s+(\S+)\s+(.*)/;
21                                 my $merged = $test;
22                                 $merged =~ s/[^0-9]//;
23                                 if (!defined($merged_pts{$merged}) || $merged_pts{$merged} > $pts) {
24                                         $merged_pts{$merged} = $pts;
25                                 }
26                                 $split_comm{$merged}{$test} = $comm;
27                         }
28                         close PTS;
29                         my $tt = 0;
30                         foreach my $merged (sort { $a <=> $b } keys %merged_pts) {
31                                 printf REP "Test %2s: %2d points", $merged, $merged_pts{$merged};
32                                 $tt += $merged_pts{$merged};
33                                 my @k = sort keys %{$split_comm{$merged}};
34                                 if (@k == 1) {
35                                         print REP " -- ", $split_comm{$merged}{$k[0]}, "\n";
36                                 } else {
37                                         print REP " -- ";
38                                         my $cc = 0;
39                                         foreach my $t (@k) {
40                                                 $cc++ and print REP ", ";
41                                                 print REP "$t: $split_comm{$merged}{$t}";
42                                         }
43                                         print REP "\n";
44                                 }
45                         }
46                         print REP "\nTOTAL: $tt points\n\n";
47                         $total += $tt;
48                         print " $tt";
49                 } else {
50                         print REP "No solution submitted.\n\n";
51                         print " -";
52                 }
53         }
54         print REP "### TOTAL FOR DAY 2 ###\n\n";
55         print REP "$total points\n";
56         print REP "\n\n(generated on ", strftime("%Y-%m-%d %H:%M:%S", localtime), ")\n";
57         close REP;
58         print " -> $total\n";
59 }