Skip to content
Leap Years Kata
Branch: kata
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Code Kata: Leap Years

LoC Files Total lines Comments Blank lines TestAsYouThink badge

A little history

Prior to 1582, the Julian Calendar was in wide use and defined leap years as every year divisible by 4. However, it was found in the late 16th century that the calendar year had drifted from the solar year by approximately 10 days. The Gregorian Calendar was defined in order to thin out the number of leap years and to more closely align the calendar year with the solar year. It was adopted in Papal countries on October 15, 1582, skipping 10 days from the Julian Calendar date. Protestant countries adopted the Gregorian Calendar after some time.

The Gregorian Calendar is quite accurate, but could be made more accurate by adding an additional rule that eliminates years divisible by 4000 as leap years.



Write a function that returns true or false depending on whether its input integer is a leap year or not. A leap year is defined as one that is divisible by 4, but is not otherwise divisible by 100 unless it is also divisible by 400. For example, 2019 is a typical common year and 1996 is a typical leap year, whereas 1900 is an atypical common year and 2000 is an atypical leap year.

Code Kata Boilerplate for Java 8

LoC Files Total lines Comments Blank lines

Use the below badge if you use TestAsYouThink Core to write high-quality tests. TestAsYouThink badge

Getting started

Firstly, either you fork this repository to put all your katas in the same repository, either you create a new repository per kata and push the kata boilerplate into it. Then replace the artifact coordinates used by the build system. Name the code kata too.
Make changes only in the "kata" branch.
You can use this shortened link if needed:


You may want to commit with another identifier to publish your code later. Nothing's easier:

git config ""
git config "Your Pseudo" # if needed

Take advantage of your IDE shortcuts while resolving any code kata. Download and print the keymap of IntelliJ IDEA. The table below should be very useful to learn, or to learn again, the most important shortcuts.

Theme Must Know Should Know Could Know
General Ctrl + Alt + S to open settings
Ctrl + Shift + A to find action
Editing Ctrl + Space to call basic code completion
Shift + Enter to start new line
Ctrl + Alt + L to auto-indent lines
Ctrl + Y to delete line at caret
Ctrl + Numpad +/- to expand/collapse code block
Ctrl + X to cut current line to clipboard
Ctrl + Q to call quick documentation lookup
Alt + Inser to generate code...
Refactoring Shift + F6 to rename
Ctrl + Alt + M to extract method
Ctrl + Alt + V to extract variable
Ctrl + Alt + F to extract field
Ctrl + Alt + C to extract constant
Ctrl + Alt + P to extract parameter
Navigation Ctrl + N to go to class
Ctrl + Shift + N to go to file
Alt + PageUp/PageDown* to navigate back / forward
Ctrl + B to go to declaration
Ctrl + Alt + B to go to implementation(s)
Ctrl + G to go to line
Compile and Run Shift + F10 / F9 to run / debug
Ctrl + Shift + F10 to run contexte configuration from editor
Usage Search Alt + F7 to find usages
Ctrl + Alt + F7 to show usages

If a shortcut is marked with a '*', it is to configure in the keymap settings of the IDE.

Command Line Interface as a GUI

You can invoke a standalone JAR after building it with the "standalone" Maven profile.

mvn package -Pstandalone # to build it
java -jar target/kata-standalone.jar # to use it

Updating your fork

Update your fork as follows. It is assumed you did not commit in the "master" branch. Otherwise please send me a pull request.

git fetch origin master && git rebase -p --onto origin/master master develop && git branch -f master origin/master

Definition of Done (DoD)

What should be a DoD for the code katas?

  • The kata is done by applying Test-Driven Development (TDD).
  • The code is versioned by applying TDDflow.
  • The path to the solution is discovered according to the Transformation Priority Premise.
  • The path of successive transformations is as simple as possible.
  • The code coverage is greater than 95%.
  • The problem to solve is described in the kata documentation.


This code kata boilerplate is distributed under the GNU GPLv3 license. The GPLv3 license is included in the LICENSE.txt file. More information about this license is available at

You can’t perform that action at this time.