aboutsummaryrefslogtreecommitdiff
path: root/challenge-175/mohammad-anwar/java/theweeklychallenge/LastSunday.java
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-175/mohammad-anwar/java/theweeklychallenge/LastSunday.java')
-rw-r--r--challenge-175/mohammad-anwar/java/theweeklychallenge/LastSunday.java67
1 files changed, 67 insertions, 0 deletions
diff --git a/challenge-175/mohammad-anwar/java/theweeklychallenge/LastSunday.java b/challenge-175/mohammad-anwar/java/theweeklychallenge/LastSunday.java
new file mode 100644
index 0000000000..9fbac7fa2b
--- /dev/null
+++ b/challenge-175/mohammad-anwar/java/theweeklychallenge/LastSunday.java
@@ -0,0 +1,67 @@
+package theweeklychallenge;
+
+/*
+
+Week 175:
+
+ https://theweeklychallenge.org/blog/perl-weekly-challenge-175
+
+Task #1: Last Sunday
+
+ Write a script to list Last Sunday of every month in the given year.
+
+Compile and Run:
+
+ mohammad-anwar/java$ javac theweeklychallenge/LastSunday.java
+ mohammad-anwar/java$ java theweeklychallenge.LastSunday
+
+*/
+
+import java.util.Arrays;
+import java.util.ArrayList;
+import java.time.LocalDate;
+import junit.framework.TestCase;
+import static junit.framework.Assert.*;
+
+public class LastSunday extends TestCase {
+
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(
+ theweeklychallenge.LastSunday.class);
+ }
+
+ public void testLastSunday() {
+ String[] got = allLastSundayOf(2022);
+ String[] exp = {
+ "2022-01-30", "2022-02-27", "2022-03-27", "2022-04-24",
+ "2022-05-29", "2022-06-26", "2022-07-31", "2022-08-28",
+ "2022-09-25", "2022-10-30", "2022-11-27", "2022-12-25",
+ };
+
+ assertEquals(Arrays.toString(exp), Arrays.toString(got));
+ }
+
+ public static String[] allLastSundayOf(int year) {
+ ArrayList<String> ls = new ArrayList<String>();
+ for(int month = 1; month <= 12; month++) {
+ ls.add(lastSundayOf(month, year));
+ }
+
+ return ls.toArray(new String[ls.size()]);
+ }
+
+ public static String lastSundayOf(int month, int year) {
+ LocalDate date = LocalDate.of(year, month, 1)
+ .plusMonths(1)
+ .minusDays(1);
+
+ int dow = date.getDayOfWeek().getValue();
+
+ if (dow == 7) {
+ return date.toString();
+ }
+ else {
+ return date.minusDays(dow).toString();
+ }
+ }
+}