first few days
This commit is contained in:
parent
8764f51187
commit
d3ae65f625
12 changed files with 343 additions and 0 deletions
47
4/1.pl
Normal file
47
4/1.pl
Normal file
|
@ -0,0 +1,47 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use v5.10;
|
||||
use Data::Dumper;
|
||||
|
||||
chomp (my @data = <STDIN>);
|
||||
@data = sort @data;
|
||||
|
||||
my %sleeps;
|
||||
my %most;
|
||||
my $currentguard = -1;
|
||||
my $sleeptime = -1;
|
||||
|
||||
foreach my $line (@data) {
|
||||
say $line;
|
||||
if ( my ($date, $hour, $min, $guard) =
|
||||
($line =~
|
||||
m/\[(\d{4}-\d{2}-\d{2}) (\d{2}):(\d{2})\] Guard #(\d+) begins shift/) ) {
|
||||
$currentguard = $guard;
|
||||
}
|
||||
elsif ( my ($date, $hour, $min) =
|
||||
($line =~
|
||||
m/\[(\d{4}-\d{2}-\d{2}) (\d{2}):(\d{2})\] falls asleep/) ) {
|
||||
$sleeptime = $min;
|
||||
}
|
||||
elsif ( my ($date, $hour, $min) =
|
||||
($line =~
|
||||
m/\[(\d{4}-\d{2}-\d{2}) (\d{2}):(\d{2})\] wakes up/) ) {
|
||||
foreach my $mt ($sleeptime .. $min-1) {
|
||||
$sleeps{$currentguard}->{$mt}++;
|
||||
$most{$currentguard}++;
|
||||
}
|
||||
}
|
||||
else {
|
||||
say "no match"
|
||||
}
|
||||
}
|
||||
|
||||
my @most = sort { $most{$b} <=> $most{$a} } keys %most;
|
||||
say $most[0] . " most, with " . $most{$most[0]};
|
||||
|
||||
my $result = $sleeps{$most[0]};
|
||||
my @best = sort { $$result{$b} <=> $$result{$a} } keys %$result;
|
||||
|
||||
say $best[0] . " best minute";
|
||||
say ($best[0] * $most[0]);
|
60
4/2.pl
Normal file
60
4/2.pl
Normal file
|
@ -0,0 +1,60 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use v5.10;
|
||||
use Data::Dumper;
|
||||
|
||||
chomp (my @data = <STDIN>);
|
||||
@data = sort @data;
|
||||
|
||||
my %sleeps;
|
||||
my %most;
|
||||
my $currentguard = -1;
|
||||
my $sleeptime = -1;
|
||||
|
||||
foreach my $line (@data) {
|
||||
say $line;
|
||||
if ( my ($date, $hour, $min, $guard) =
|
||||
($line =~
|
||||
m/\[(\d{4}-\d{2}-\d{2}) (\d{2}):(\d{2})\] Guard #(\d+) begins shift/) ) {
|
||||
$currentguard = $guard;
|
||||
}
|
||||
elsif ( my ($date, $hour, $min) =
|
||||
($line =~
|
||||
m/\[(\d{4}-\d{2}-\d{2}) (\d{2}):(\d{2})\] falls asleep/) ) {
|
||||
$sleeptime = $min;
|
||||
}
|
||||
elsif ( my ($date, $hour, $min) =
|
||||
($line =~
|
||||
m/\[(\d{4}-\d{2}-\d{2}) (\d{2}):(\d{2})\] wakes up/) ) {
|
||||
foreach my $mt ($sleeptime .. $min-1) {
|
||||
$sleeps{$currentguard}->{$mt}++;
|
||||
$most{$currentguard}++;
|
||||
}
|
||||
}
|
||||
else {
|
||||
say "no match"
|
||||
}
|
||||
}
|
||||
|
||||
my @most = sort { $most{$b} <=> $most{$a} } keys %most;
|
||||
say $most[0] . " most, with " . $most{$most[0]};
|
||||
|
||||
my $result = $sleeps{$most[0]};
|
||||
my @best = sort { $$result{$b} <=> $$result{$a} } keys %$result;
|
||||
|
||||
say $best[0] . " best minute";
|
||||
say ($best[0] * $most[0]);
|
||||
|
||||
my ($p2guard, $p2min, $p2count);
|
||||
foreach my $guard (keys %sleeps) {
|
||||
my $result = $sleeps{$guard};
|
||||
my @best = sort { $$result{$b} <=> $$result{$a} } keys %$result;
|
||||
say $guard . " with min " . $best[0] . ": " . $$result{$best[0]};
|
||||
if ($$result{$best[0]} > $p2count) {
|
||||
$p2count = $$result{$best[0]};
|
||||
$p2guard = $guard;
|
||||
$p2min = $best[0];
|
||||
}
|
||||
}
|
||||
say "$p2guard, $p2count, $p2min: " . $p2guard * $p2min;
|
17
4/sample.txt
Normal file
17
4/sample.txt
Normal file
|
@ -0,0 +1,17 @@
|
|||
[1518-11-01 00:00] Guard #10 begins shift
|
||||
[1518-11-01 00:05] falls asleep
|
||||
[1518-11-01 00:25] wakes up
|
||||
[1518-11-01 00:30] falls asleep
|
||||
[1518-11-01 00:55] wakes up
|
||||
[1518-11-01 23:58] Guard #99 begins shift
|
||||
[1518-11-02 00:40] falls asleep
|
||||
[1518-11-02 00:50] wakes up
|
||||
[1518-11-03 00:05] Guard #10 begins shift
|
||||
[1518-11-03 00:24] falls asleep
|
||||
[1518-11-03 00:29] wakes up
|
||||
[1518-11-04 00:02] Guard #99 begins shift
|
||||
[1518-11-04 00:36] falls asleep
|
||||
[1518-11-04 00:46] wakes up
|
||||
[1518-11-05 00:03] Guard #99 begins shift
|
||||
[1518-11-05 00:45] falls asleep
|
||||
[1518-11-05 00:55] wakes up
|
Loading…
Add table
Add a link
Reference in a new issue