Project Euler/19: Difference between revisions
From charlesreid1
(Created page with "=Counting Sundays= In this problem, we are counting the number of Sundays during the twentieth century. The solution that I created in Java was to create two ''generator'' o...") |
m (Replacing charlesreid1.com:3000 with git.charlesreid1.com) |
||
| (2 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
=Counting Sundays= | =Counting Sundays= | ||
In this problem, we are counting the number of Sundays during the twentieth century | In this problem, we are counting the number of Sundays during the twentieth century: "How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)?" | ||
The solution that I created in Java was to create two ''generator'' objects, which would | https://projecteuler.net/problem=19 | ||
=Solution Technique= | |||
The solution that I created in Java was to create two cyclical ''generator'' objects, which would be incremented with each day, and would keep track of the day of the week and hte day of the month, respectively. Then keeping track of the day would be a simple matter of stepping through each day, incrementing the counters each time, and stopping at the particular date of interest. | |||
The day of the week generator was simple enough - a mod 7 counter - but the day of the month generator object needed several rules hard-coded to ensure it would account for leap years correctly. | |||
Here is what the final driver program looked like - the two classes are <code>SundayGenerator</code> and <code>DOMGenerator</code>. | Here is what the final driver program looked like - the two classes are <code>SundayGenerator</code> and <code>DOMGenerator</code>. | ||
| Line 40: | Line 46: | ||
</pre> | </pre> | ||
=Code= | |||
https://git.charlesreid1.com/cs/euler/src/master/scratch/Round1_001-020/019/Problem019.java | |||
=Flags= | |||
{{ProjectEulerFlag}} | {{ProjectEulerFlag}} | ||
Latest revision as of 03:46, 9 October 2019
Counting Sundays
In this problem, we are counting the number of Sundays during the twentieth century: "How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)?"
https://projecteuler.net/problem=19
Solution Technique
The solution that I created in Java was to create two cyclical generator objects, which would be incremented with each day, and would keep track of the day of the week and hte day of the month, respectively. Then keeping track of the day would be a simple matter of stepping through each day, incrementing the counters each time, and stopping at the particular date of interest.
The day of the week generator was simple enough - a mod 7 counter - but the day of the month generator object needed several rules hard-coded to ensure it would account for leap years correctly.
Here is what the final driver program looked like - the two classes are SundayGenerator and DOMGenerator.
We begin the generators on January 1, 1900, and start counting after 1901 starts.
public class Problem019 {
public static final int SUNDAY = 0;
public static final int MONDAY = 1;
public static final int FIRST = 1;
public static void main(String[] args) {
SundayGenerator sunday = new SundayGenerator(MONDAY);
DOMGenerator dom = new DOMGenerator(1900,1,1, 2000,12,31);
int count = 0;
int j = 0;
// Note: this skips the very first day, but we know that is not a solution.
while(dom.hasNext()) {
int thisdow = sunday.next();
int thisdom = dom.next();
if(thisdow==SUNDAY && thisdom==FIRST){
// Careful.
if(dom.year>1900) {
count++;
}
}
j++;
}
System.out.println(Integer.toString(count));
}
...
Code
https://git.charlesreid1.com/cs/euler/src/master/scratch/Round1_001-020/019/Problem019.java
Flags