Solved ProjectEuler/019: php, ruby
This commit is contained in:
		
							
								
								
									
										25
									
								
								ProjectEuler/019/desc.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								ProjectEuler/019/desc.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
title: How many Sundays fell on the first of the month during the twentieth century?
 | 
			
		||||
url: http://projecteuler.net/problem=19
 | 
			
		||||
 | 
			
		||||
desc: |
 | 
			
		||||
  You are given the following information, but you may prefer to do some research for yourself.
 | 
			
		||||
  1 Jan 1900 was a Monday.
 | 
			
		||||
  Thirty days has September,
 | 
			
		||||
  April, June and November.
 | 
			
		||||
  All the rest have thirty-one,
 | 
			
		||||
  Saving February alone,
 | 
			
		||||
  Which has twenty-eight, rain or shine.
 | 
			
		||||
  And on leap years, twenty-nine.
 | 
			
		||||
  A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400.
 | 
			
		||||
  How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)?
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
solution: Instead of using buildtin DateTime language features this use a homemade algorithm
 | 
			
		||||
 | 
			
		||||
solutions:
 | 
			
		||||
  solve.php:
 | 
			
		||||
    desc: Basic solution
 | 
			
		||||
    language: php
 | 
			
		||||
  solve.rb:
 | 
			
		||||
    desc: Basic solution
 | 
			
		||||
    language: ruby
 | 
			
		||||
							
								
								
									
										38
									
								
								ProjectEuler/019/solve.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								ProjectEuler/019/solve.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
<?php
 | 
			
		||||
$days_in_month = array( 
 | 
			
		||||
	1 => 31,
 | 
			
		||||
	2 => 28,
 | 
			
		||||
	3 => 31,
 | 
			
		||||
	4 => 30,
 | 
			
		||||
	5 => 31,
 | 
			
		||||
	6 => 30,
 | 
			
		||||
	7 => 31,
 | 
			
		||||
	8 => 31,
 | 
			
		||||
	9 => 30,
 | 
			
		||||
	10 => 31,
 | 
			
		||||
	11 => 30,
 | 
			
		||||
	12 => 31
 | 
			
		||||
);
 | 
			
		||||
$day_cycle = 0;
 | 
			
		||||
for($year=1900; $year <= 2000; $year++) {
 | 
			
		||||
	for($month=1; $month <= 12; $month++) {
 | 
			
		||||
	
 | 
			
		||||
		$cdates = $days_in_month[$month];
 | 
			
		||||
			if($month == 2) {
 | 
			
		||||
			if($year % 4 == 0) {
 | 
			
		||||
				$cdates = 29;
 | 
			
		||||
			}
 | 
			
		||||
			if($years % 100 == 0) {
 | 
			
		||||
				$cdates = 28;
 | 
			
		||||
			}
 | 
			
		||||
			if($years % 400 == 0) {
 | 
			
		||||
				$cdates = 29;
 | 
			
		||||
			}
 | 
			
		||||
			}
 | 
			
		||||
			$day_cycle += $cdates;
 | 
			
		||||
			if($day_cycle % 7 == 0) {
 | 
			
		||||
				if($year >= 1901) {$sum++; }
 | 
			
		||||
			}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
echo $sum;
 | 
			
		||||
							
								
								
									
										9
									
								
								ProjectEuler/019/solve.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								ProjectEuler/019/solve.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
require "date"
 | 
			
		||||
sundays = 0
 | 
			
		||||
(1901..2000).each do |year|
 | 
			
		||||
	(1..12).each do |month|
 | 
			
		||||
			dt = Date.new(year,month,1)
 | 
			
		||||
			sundays += (dt.wday == 0) ? 1 : 0
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
puts sundays
 | 
			
		||||
		Reference in New Issue
	
	Block a user