From 0ec0d074cc31549f233547d9eb17c432191634f3 Mon Sep 17 00:00:00 2001 From: Jay Ashokbhai Dangar Date: Thu, 14 May 2020 12:49:26 +0530 Subject: [PATCH 1/4] added template Create Template for I/O. --- content/kata/LeapYears.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/content/kata/LeapYears.md b/content/kata/LeapYears.md index 200897e..224d88f 100644 --- a/content/kata/LeapYears.md +++ b/content/kata/LeapYears.md @@ -24,3 +24,29 @@ Acceptance Criteria: 3. All years divisible by 4 but not by 100 ARE leap years (e.g., 2008, 2012, 2016), 4. All years not divisible by 4 are NOT leap years (e.g. 2017, 2018, 2019). +########################################################################################################################## + + Code Starts Here + +########################################################################################################################## +import java.io.*; +import java.util.*; + +Class LeapYearChecker{ + + public static void main(String[] args) throws Exception{ + BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(args[0]))); + Stream inputs = reader.lines(); + Iterator inputLines = inputs.iterator(); + + while(inputLines.hasNext()){ + + } + + reader.close(); + } + + static boolean isLeapYear(){ + + } +} From f163d24f85a35d7d042544f2971c270e760a9dab Mon Sep 17 00:00:00 2001 From: Jay Ashokbhai Dangar Date: Thu, 14 May 2020 13:08:32 +0530 Subject: [PATCH 2/4] Code Completed added Logic part and completed the code. --- content/kata/LeapYears.md | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/content/kata/LeapYears.md b/content/kata/LeapYears.md index 224d88f..22dedf1 100644 --- a/content/kata/LeapYears.md +++ b/content/kata/LeapYears.md @@ -40,13 +40,35 @@ Class LeapYearChecker{ Iterator inputLines = inputs.iterator(); while(inputLines.hasNext()){ + StringTokenizer tokens = new StringTokenizer(inputLines.next()); + int year = Integer.parseInt(tokens.nextToken()); + if(year<0){ + reader.close(); + throw new Exception("Year cannot be negative"); + } + String printStatementForLeapYear = " is not a Leap Year."; + if(isLeapYear(year)){ + printStatementForLeapYear = " is a Leap Year."; + } + System.out.println("Year " + year + printStatementForLeapYear); } reader.close(); } - static boolean isLeapYear(){ - + static boolean isLeapYear(int year){ + if(year % 400 == 0){ + return true; + } + else if(year % 100 == 0){ + return false; + } + else if(year % 4 ==0 ){ + return true; + } + else { + return false; + } } } From ec034de5a937d4a85e6661ea44482024408ef604 Mon Sep 17 00:00:00 2001 From: Jay Ashokbhai Dangar Date: Thu, 14 May 2020 13:35:25 +0530 Subject: [PATCH 3/4] Logic change for safety Simplified the logic --- content/kata/LeapYears.md | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/content/kata/LeapYears.md b/content/kata/LeapYears.md index 22dedf1..2c619d8 100644 --- a/content/kata/LeapYears.md +++ b/content/kata/LeapYears.md @@ -58,17 +58,12 @@ Class LeapYearChecker{ } static boolean isLeapYear(int year){ - if(year % 400 == 0){ - return true; - } - else if(year % 100 == 0){ + if(year%4!= 0){ return false; } - else if(year % 4 ==0 ){ - return true; - } - else { + else if(year % 100 == 0 && year%400!=0){ return false; } + return true; } } From fad2577c9f493099f674a84ada2e00556b536304 Mon Sep 17 00:00:00 2001 From: Jay Ashokbhai Dangar Date: Thu, 14 May 2020 14:18:20 +0530 Subject: [PATCH 4/4] Adding Support for big values Can able to work with big numbers, without restrictions on the length of the inputs. --- content/kata/LeapYears.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/kata/LeapYears.md b/content/kata/LeapYears.md index 2c619d8..980adc0 100644 --- a/content/kata/LeapYears.md +++ b/content/kata/LeapYears.md @@ -41,8 +41,8 @@ Class LeapYearChecker{ while(inputLines.hasNext()){ StringTokenizer tokens = new StringTokenizer(inputLines.next()); - int year = Integer.parseInt(tokens.nextToken()); - if(year<0){ + BigInteger year = new BigInteger(tokens.nextToken()); + if(year.compareTo(BigInteger.ZERO)==-1){ reader.close(); throw new Exception("Year cannot be negative"); } @@ -57,11 +57,11 @@ Class LeapYearChecker{ reader.close(); } - static boolean isLeapYear(int year){ - if(year%4!= 0){ + static boolean isLeapYear(BigInteger year){ + if(year.remainder(new BigInteger("4"))!= BigInteger.ZERO){ return false; } - else if(year % 100 == 0 && year%400!=0){ + else if(year.remainder(new BigInteger("100"))==BigInteger.ZERO && year.remainder(new BigInteger("400"))!=BigInteger.ZERO){ return false; } return true;