8 my (@cls) = /\A(.*): (\d+)-(\d+) or (\d+)-(\d+)/;
9 print "$2:$3,$4:$5.\n";
15 print "Your:", join("|", @your), "\n";
19 for (split /\n/, <>) {
24 for my $r (@classes) {
25 if (($num >= $r->[1] && $num <= $r->[2])
26 || $num >= $r->[3] && $num <= $r->[4]) {
32 # print "nearby:", join("|", @n), "\n";
37 for my $cls (@classes) {
38 my ($name, $f1, $t1, $f2, $t2) = @$cls;
39 # print "Class $name:\n";
41 for my $col (0 .. $#your) {
43 for my $ticket (@nearby) {
44 if (($ticket->[$col] < $f1 || $ticket->[$col] > $t1)
45 && $ticket->[$col] < $f2 || $ticket->[$col] > $t2) {
49 $valid_cols{$name}->{$col} = 1;
50 print "$name can be $col\n";
56 while (keys %valid_cols) {
57 for my $class (keys %valid_cols) {
58 if (keys %{ $valid_cols{$class} } == 1) {
59 my ($col) = keys %{ $valid_cols{$class} };
60 print "$class is $col\n";
61 delete $valid_cols{$class};
62 for my $cl1 (keys %valid_cols) {
63 delete $valid_cols{$cl1}->{$col};
65 $mul *= $your[$col] if $class =~ /\Adeparture/;
71 print "Total: $mul\n";