Sunday, August 14, 2011

Problem 19

prob19.pl Problem 19
Filename: prob19.pl
#!/usr/bin/perl -w

use strict;

my $year = 1901;

# Jan 1 1901 is a tuesday
my $day = 2;

my $num_sundays_on_first = 0;

while($year <= 2000)
{
    # Jan
    if($day % 7 == 0)
    {
	$num_sundays_on_first = $num_sundays_on_first + 1;
    }
    
    $day = $day+31;
    
    #Feb
    if($day % 7 == 0)
    {
	$num_sundays_on_first = $num_sundays_on_first + 1;
    }
    
    if(leap_year($year))
    {
	$day = $day+29;
    }
    else
    {
	$day = $day+28;
    }
    
    # Mar
    if($day % 7 == 0)
    {
	$num_sundays_on_first = $num_sundays_on_first + 1;
    }
    
    $day = $day+31;
    
    # Apr
    if($day % 7 == 0)
    {
	$num_sundays_on_first = $num_sundays_on_first + 1;
    }
    
    $day = $day+30;
    
    # May
    if($day % 7 == 0)
    {
	$num_sundays_on_first = $num_sundays_on_first + 1;
    }
    
    $day = $day+31;
    
    # Jun
    if($day % 7 == 0)
    {
	$num_sundays_on_first = $num_sundays_on_first + 1;
    }
    
    $day = $day+30;
    
    # Jul
    if($day % 7 == 0)
    {
	$num_sundays_on_first = $num_sundays_on_first + 1;
    }
    
    $day = $day+31;
    
    # Aug
    if($day % 7 == 0)
    {
	$num_sundays_on_first = $num_sundays_on_first + 1;
    }
    
    $day = $day+31;
    
    # Sept
    if($day % 7 == 0)
    {
	$num_sundays_on_first = $num_sundays_on_first + 1;
    }
    
    $day = $day+30;
    
    # Oct
    if($day % 7 == 0)
    {
	$num_sundays_on_first = $num_sundays_on_first + 1;
    }
    
    $day = $day+31;
    
    # Nov
    if($day % 7 == 0)
    {
	$num_sundays_on_first = $num_sundays_on_first + 1;
    }
    
    $day = $day+30;
    
    # Dec
    if($day % 7 == 0)
    {
	$num_sundays_on_first = $num_sundays_on_first + 1;
    }
    
    $day = $day+31;
    
    
    $year++;
}

printf "num_sundays = $num_sundays_on_first\n";





sub leap_year {
    my($year) = @_;
    if($year % 4 == 0)
    {
	if($year % 100 == 0)
	{
	    if($year % 400 == 0)
	    {
		return 1;
	    }
	    else
	    {
		return 0;
	    }
	}
	else
	{
	    return 1;
	}
    }
    else
    {
	return 0;
    }
}



syntax highlighted by Code2HTML, v. 0.9.1

No comments:

Post a Comment