/* Leap year (Rosetta code) in Picat. http://rosettacode.org/wiki/Leap_year """ Determine whether a given year is a leap year in the Gregorian calendar """ This Picat model was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ % import util. % import cp. main => go. go => println(leap_years=[Y : Y in 1900..2038, leap_year(Y)]), println(leap_years=[Y : Y in 1900..2038, leap_year2(Y)]), println(leap_years=[Y : Y in 1900..2038, leap_year3(Y)]), println(leap_years=[Y : Y in 1600..1610, leap_year(Y)]), foreach(Y in [1600,1700,1899,1900,2000,2006,2012]) println(Y=cond(leap_year(Y),leap_year,not_leap_year)) end, nl. leap_year(Year) => (Year mod 4 == 0, Year mod 100 != 0) ; Year mod 400 == 0. % alternative approach leap_year2(Year), Year mod 4 == 0, Year mod 100 != 0 => true. leap_year2(Year), Year mod 400 == 0 => true. % silly approach :-) leap_year3(Year) => ';'((Year mod 4 == 0 && Year mod 100 != 0), Year mod 400 == 0).