aboutsummaryrefslogtreecommitdiff
path: root/challenge-187/mohammad-anwar/java
diff options
context:
space:
mode:
author冯昶 <fengchang@novel-supertv.com>2022-10-24 17:44:04 +0800
committer冯昶 <fengchang@novel-supertv.com>2022-10-24 17:44:04 +0800
commit7783ecb7dad2ae5ea3d3022a13e3901c196c4154 (patch)
treefa408d0b19c541602d81799c8a13eea61df2cb8f /challenge-187/mohammad-anwar/java
parenta406c6935f88c7afa04a707a2611ebe4fe4eadae (diff)
parentbb06570f6b1634ca14bfd08927f3bfc6c052c494 (diff)
downloadperlweeklychallenge-club-7783ecb7dad2ae5ea3d3022a13e3901c196c4154.tar.gz
perlweeklychallenge-club-7783ecb7dad2ae5ea3d3022a13e3901c196c4154.tar.bz2
perlweeklychallenge-club-7783ecb7dad2ae5ea3d3022a13e3901c196c4154.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-187/mohammad-anwar/java')
-rw-r--r--challenge-187/mohammad-anwar/java/theweeklychallenge/DaysTogether.java87
1 files changed, 87 insertions, 0 deletions
diff --git a/challenge-187/mohammad-anwar/java/theweeklychallenge/DaysTogether.java b/challenge-187/mohammad-anwar/java/theweeklychallenge/DaysTogether.java
new file mode 100644
index 0000000000..0c0d0869fb
--- /dev/null
+++ b/challenge-187/mohammad-anwar/java/theweeklychallenge/DaysTogether.java
@@ -0,0 +1,87 @@
+package theweeklychallenge;
+
+/*
+
+Week 187:
+
+ https://theweeklychallenge.org/blog/perl-weekly-challenge-187
+
+Task #1: Days Together
+
+ Two friends, Foo and Bar gone on holidays seperately to the same
+ city. You are given their schedule i.e. start date and end date.
+
+ To keep the task simple, the date is in the form 'DD-MM' and all
+ dates belong to the same calendar year i.e. between '01-01' and
+ '31-12'.
+
+ Also the year is non-leap year and both dates are inclusive.
+
+Compile and Run:
+
+ mohammad-anwar/java$ javac theweeklychallenge/DaysTogether.java
+ mohammad-anwar/java$ java theweeklychallenge.DaysTogether
+
+*/
+
+import java.time.LocalDate;
+import java.time.temporal.ChronoUnit;
+import junit.framework.TestCase;
+import static junit.framework.Assert.*;
+
+public class DaysTogether extends TestCase {
+
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(
+ theweeklychallenge.DaysTogether.class
+ );
+ }
+
+ public void testDaysTogether() {
+ assertEquals(4, daysTogether("12-01","20-01","15-01","18-01"));
+ assertEquals(0, daysTogether("02-03","12-03","13-03","14-03"));
+ assertEquals(2, daysTogether("02-03","12-03","11-03","15-03"));
+ assertEquals(4, daysTogether("30-03","05-04","28-03","02-04"));
+ }
+
+ public static int daysTogether(
+ String sd1, String ed1, String sd2, String ed2) {
+ LocalDate _sd1 = _date(sd1);
+ LocalDate _ed1 = _date(ed1);
+ LocalDate _sd2 = _date(sd2);
+ LocalDate _ed2 = _date(ed2);
+
+ int days = 0;
+
+ if (_ed1.compareTo(_sd2) < 0) {
+ return days;
+ }
+
+ if (_sd1.compareTo(_sd2) > 0) {
+ days = _daysTogether(_sd1, _ed1, _ed2);
+ }
+ else if (_ed2.compareTo(_sd2) > 0) {
+ days = _daysTogether(_sd2, _ed1, _ed2);
+ }
+
+ return days;
+ }
+
+ public static LocalDate _date(String dateStr) {
+ String[] splitDate = dateStr.split("-");
+ int day = Integer.parseInt(splitDate[0]);
+ int month = Integer.parseInt(splitDate[1]);
+
+ return LocalDate.of(2022, month, day);
+ }
+
+ public static int _daysTogether(
+ LocalDate from, LocalDate to, LocalDate _to) {
+ if (to.compareTo(_to) > 0) {
+ to = _to;
+ }
+
+ long days = ChronoUnit.DAYS.between(from, to);
+ return (int)days + 1;
+ }
+}