aboutsummaryrefslogtreecommitdiff
path: root/challenge-137/mohammad-anwar/java/theweeklychallenge
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2021-11-06 14:34:25 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2021-11-06 14:34:25 +0000
commitf439b0895e991371b3fe24ec314b4e6d02a975a6 (patch)
tree746102730f22bfd6e1b059cd6e492c6087e191d2 /challenge-137/mohammad-anwar/java/theweeklychallenge
parenta08e743dd2d4ada9221a1740234e0b985876d60f (diff)
downloadperlweeklychallenge-club-f439b0895e991371b3fe24ec314b4e6d02a975a6.tar.gz
perlweeklychallenge-club-f439b0895e991371b3fe24ec314b4e6d02a975a6.tar.bz2
perlweeklychallenge-club-f439b0895e991371b3fe24ec314b4e6d02a975a6.zip
- Tidied up folder for Java contribution.
Diffstat (limited to 'challenge-137/mohammad-anwar/java/theweeklychallenge')
-rw-r--r--challenge-137/mohammad-anwar/java/theweeklychallenge/LongYear.java77
1 files changed, 77 insertions, 0 deletions
diff --git a/challenge-137/mohammad-anwar/java/theweeklychallenge/LongYear.java b/challenge-137/mohammad-anwar/java/theweeklychallenge/LongYear.java
new file mode 100644
index 0000000000..b3fc8ae696
--- /dev/null
+++ b/challenge-137/mohammad-anwar/java/theweeklychallenge/LongYear.java
@@ -0,0 +1,77 @@
+package theweeklychallenge;
+
+/*
+
+Week 137:
+
+ https://theweeklychallenge.org/blog/perl-weekly-challenge-137
+
+Task #1: Long Year
+
+ Write a script to find all the years between 1900 and 2100 which is a Long Year.
+
+*/
+
+import java.util.*;
+import java.time.Year;
+import java.time.LocalDate;
+import java.time.temporal.IsoFields;
+
+import junit.framework.TestCase;
+import static junit.framework.Assert.*;
+
+public class LongYear extends TestCase {
+
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(theweeklychallenge.LongYear.class);
+ }
+
+ public void testLongYear() {
+
+ List<Integer> exp = Arrays.asList(
+ 1903, 1908, 1914, 1920, 1925,
+ 1931, 1936, 1942, 1948, 1953,
+ 1959, 1964, 1970, 1976, 1981,
+ 1987, 1992, 1998, 2004, 2009,
+ 2015, 2020, 2026, 2032, 2037,
+ 2043, 2048, 2054, 2060, 2065,
+ 2071, 2076, 2082, 2088, 2093,
+ 2099 );
+
+ List<Integer> got = new ArrayList<Integer>();
+ for (int y = 1900; y <= 2100; y++) {
+ if (isLongYear(y)) {
+ got.add(y);
+ }
+ }
+
+ assertTrue(got.equals(exp));
+ }
+
+ public static boolean isLongYear(int y) {
+ if (getWeekNumber(y, 12, 31) == 53) {
+ if (Year.isLeap(y)) {
+ if (getDayOfWeek(y, 1, 1) == 3
+ || getDayOfWeek(y, 12, 31) == 5) {
+ return true;
+ }
+ }
+ else {
+ if (getDayOfWeek(y, 1, 1) == 4
+ || getDayOfWeek(y, 12, 31) == 4) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ public static int getDayOfWeek(int year, int month, int day) {
+ return LocalDate.of(year, month, day).getDayOfWeek().getValue();
+ }
+
+ public static int getWeekNumber(int year, int month, int day) {
+ return LocalDate.of(year, month, day).get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);
+ }
+}