summaryrefslogtreecommitdiff
path: root/src/suite_rep.pl
blob: 4294394d11f602fb912e612b875b9e89e460de5a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/perl

$NUM_BINS = 20;


$max_bin = 0;
open(LOG, $ARGV[0]) || die "Can't open $ARGV[0], $!\n";
while(<LOG>)
{
    if ($_ =~ /^Problem \"([^\"]+)\" solved in (\d+\.\d+)/)
    {
        $name = $1;
        $time = $2;
    }
    elsif ($_ =~ /^>>>>> Problem \"([^\"]+)\" was not solved\. <<<<</)
    {
        $name = $1;
        $time = -1;
    }

    if ($name ne "")
    {
        if ($name =~ /[^\.]+\.(\d+)/)
        {
            $name = $1;
        }
        if ($time != -1)
        {
            $sec_per = 20.0 / $NUM_BINS;
            $bin_num = $time / $sec_per;
            $bin_num++;
            $bin_num = int($bin_num);
        }
        else
        {
            $bin_num = 0;
        }

        if (!defined($bin[$bin_num]))
        {
            $bin[$bin_num] = 0;
        }
        $bin[$bin_num]++;
        $ids[$bin_num] .= " " . $name;
        if ($bin[$bin_num] > $max_bin)
        {
            $max_bin = $bin[$bin_num];
        }
        $name = "";
        $time = 0;
    }
}
close(LOG);


for ($x = 1;
     $x < $NUM_BINS + 1;
     $x++)
{
    $num_star = $bin[$x] / $max_bin * 60;
    $num_star = int($num_star);
    printf "%02u..%02u sec: %s ($bin[$x])\n", $x-1, $x, "#" x $num_star;
    print  "\n       ids: $ids[$x]\n\n";
}
$num_star = $bin[0] / $max_bin * 60;
$num_star = int($num_star);
printf "not solved: %s ($bin[0])\n", "#" x $num_star;
print  "\n       ids: $ids[0]\n\n";