Leap year: Difference between revisions
(→{{header|Python}}: added ruby) |
(+Icon+Unicon) |
||
Line 42: | Line 42: | ||
2000 is a leap year. |
2000 is a leap year. |
||
</pre> |
</pre> |
||
== Icon and Unicon == |
|||
Gives leap year status for 2000,1900,2012 and any arguments you give |
|||
<lang Icon>procedure main(arglist) |
|||
every y := !([2000,1900,2012]|||arglist) do |
|||
write("The year ",y," is ", leapyear(y) | "not ","a leap year.") |
|||
end |
|||
procedure leapyear(year) #: determine if year is leap |
|||
if (numeric(year) % 4 = 0 & year % 100 ~= 0) | (numeric(year) % 400 = 0) then return |
|||
end |
|||
</lang> |
|||
==={{header|Icon}}=== |
|||
==={{header|Unicon}}=== |
|||
The Icon solution works in Unicon. |
|||
=={{header|J}}== |
=={{header|J}}== |
Revision as of 11:28, 21 July 2010
You are encouraged to solve this task according to the task description, using any language you may know.
Determine whether a given year is a leap year.
See Also
ActionScript
<lang actionscript>public function isLeapYear(year:int):Boolean {
if (year % 100 == 0) { return (year % 400 == 0); } return (year % 4 == 0);
}</lang>
ALGOL 68
<lang algol68>MODE YEAR = INT, MONTH = INT, DAY = INT;
PROC year days = (YEAR year)DAY: # Ignore 1752 CE for the moment #
( month days(year, 2) = 28 | 365 | 366 );
PROC month days = (YEAR year, MONTH month) DAY:
( month | 31, 28 + ABS(year MOD 4 NE 0 OR year MOD 400 EQ 0), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
PROC is leap year = (YEAR year)BOOL: year days(year)=366;
test:(
[]INT test cases = (1900, 1996, 1997, 2000); FOR i TO UPB test cases DO YEAR year = test cases[i]; printf(($g(0)" is "b("","not ")"a leap year."l$, year, is leap year(year))) OD
)</lang> Output:
1900 is not a leap year. 1996 is not a leap year. 1997 is a leap year. 2000 is a leap year.
Icon and Unicon
Gives leap year status for 2000,1900,2012 and any arguments you give <lang Icon>procedure main(arglist) every y := !([2000,1900,2012]|||arglist) do
write("The year ",y," is ", leapyear(y) | "not ","a leap year.")
end
procedure leapyear(year) #: determine if year is leap
if (numeric(year) % 4 = 0 & year % 100 ~= 0) | (numeric(year) % 400 = 0) then return
end </lang>
Icon
Unicon
The Icon solution works in Unicon.
J
<lang j>isLeap=: 0 -/@:= 4 100 400 |/ ]</lang>
Example use:
<lang> isLeap 1900 1996 1997 2000 0 1 0 1</lang>
Java
<lang java>new java.util.GregorianCalendar().isLeapYear(year)</lang>
or <lang java>public static boolean isLeapYear(int year){
if(year % 100 == 0) return year % 400 == 0; return year % 4 == 0;
}</lang>
JavaScript
<lang javascript>function isLeapYear(year) {
if (year % 100 == 0) { return (year % 400 == 0); } return (year % 4 == 0);
}</lang>
PHP
<lang php><?php function isLeapYear(year) {
if (year % 100 == 0) { return (year % 400 == 0); } return (year % 4 == 0);
}</lang>
With date('L')
:
<lang php><?php function isLeapYear(year) {
return (date('L', mktime(0, 0, 0, 2, 1, year)) === '1')
}</lang>
Python
<lang python>import calendar calendar.isleap(year)</lang>
or <lang python>def is_leap_year(year):
if year % 100 == 0: return year % 400 == 0 return year % 4 == 0</lang>
Asking for forgiveness instead of permission:
<lang python>import datetime
def is_leap_year(year):
try: datetime.date(year, 2, 29) except ValueError: return False return True</lang>
Ruby
<lang ruby>require 'date' def is_leap_year(year)
Date.new(year).leap?
end</lang>