sub valid { my %x=@_; return ($x{0}{s} eq 'b' && $x{0}{d} ==1) || ($x{1}{s} eq 'b' && $x{1}{d} ==1); } for my $d0 (1..365) { for my $s0 (qw(b g)) { for my $d1 (1..365) { for my $s1 (qw(b g)) { my %x= ( 0=>{ s=>$s0, d=>$d0 }, 1=>{ s=>$s1, d=>$d1 }, ); if (valid(%x)) { $v++; if ($s0 eq 'b' && $s1 eq 'b') { $bb++; } } else { $u++; } } } } } printf("u=%d v=%d bb=%d\n", $u, $v, $bb); # 729/1459 == .49965729952021932830 sub valid { my %x=@_; return ($x{0}{s} eq 'b' && $x{0}{d} eq 'tu') || ($x{1}{s} eq 'b' && $x{1}{d} eq 'tu'); } for my $d0 (qw(su mo tu we th fr sa)) { for my $s0 (qw(b g)) { for my $d1 (qw(su mo tu we th fr sa)) { for my $s1 (qw(b g)) { my %x= ( 0=>{ s=>$s0, d=>$d0 }, 1=>{ s=>$s1, d=>$d1 }, ); if (valid(%x)) { $v++; if ($s0 eq 'b' && $s1 eq 'b') { $bb++; } } else { $u++; } } } } } printf("u=%d v=%d bb=%d\n", $u, $v, $bb); # 13/27 == .48148148148148148148 sub valid { my %x=@_; return ($x{0}{s} eq 'b') || ($x{1}{s} eq 'b'); } for my $s0 (qw(b g)) { for my $s1 (qw(b g)) { my %x= ( 0=>{ s=>$s0 }, 1=>{ s=>$s1 }, ); if (valid(%x)) { $v++; if ($s0 eq 'b' && $s1 eq 'b') { $bb++; } } else { $u++; } } } printf("u=%d v=%d bb=%d\n", $u, $v, $bb); # 1/3 == 0.3333333333333333