blob: 94e7cce3b3c8b9767948f99daff8ca2872ccabfc (
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
|
#!/usr/bin/perl
# USAGE: analyse_gcgs.pl *.gcg > gcganalysis
use warnings;
use strict;
my %letter_points;
my %letter_counts;
binmode STDOUT, ':utf8';
sub read_gcgs {
my $games_count = 0;
for my $arg (@ARGV) {
open (my $input, "<:encoding(utf8)", $arg);
++$games_count;
while (<$input>) {
chomp;
next if (!/^\>/);
my ($player, $rack, $position, $play, $score, $cumulativescore) = split /\s+/, $_;
next if (! defined $cumulativescore);
if ($play =~ /\[/) {
print "blank play! $play for $score\n";
next;
}
for my $letter (split /|/, $play) {
++$letter_counts{$letter};
$letter_points{$letter} += int($score);
#print "$letter now seen " . $letter_counts{$letter} . " times, scored " . $letter_points{$letter} . " points\n";
}
}
}
print "# Read $games_count games.\n";
}
sub spit_analysis {
my %points_per_turn;
for my $letter (keys %letter_counts) {
$points_per_turn{$letter} = $letter_points{$letter} / $letter_counts{$letter};
}
for my $letter (sort { $points_per_turn{$b} <=> $points_per_turn{$a} } keys %points_per_turn) {
# TODO lame that this always puts out un-bar-surrounded letters
print "$letter " . $points_per_turn{$letter} . "\n";
}
}
read_gcgs();
spit_analysis();
|