Project Euler/19
From charlesreid1
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 objects, which would generate days of the week and days of the month, respectively. 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));
}
...