Julio Biason
3 years ago
6 changed files with 154 additions and 0 deletions
@ -0,0 +1,26 @@ |
|||||||
|
{ |
||||||
|
"blurb": "Given a year, report if it is a leap year.", |
||||||
|
"authors": [ |
||||||
|
"arguello" |
||||||
|
], |
||||||
|
"contributors": [ |
||||||
|
"mbertheau", |
||||||
|
"PurityControl", |
||||||
|
"robertpostill", |
||||||
|
"timotheosh", |
||||||
|
"yurrriq" |
||||||
|
], |
||||||
|
"files": { |
||||||
|
"solution": [ |
||||||
|
"leap.rkt" |
||||||
|
], |
||||||
|
"test": [ |
||||||
|
"leap-test.rkt" |
||||||
|
], |
||||||
|
"example": [ |
||||||
|
".meta/example.rkt" |
||||||
|
] |
||||||
|
}, |
||||||
|
"source": "JavaRanch Cattle Drive, exercise 3", |
||||||
|
"source_url": "http://www.javaranch.com/leap.jsp" |
||||||
|
} |
@ -0,0 +1 @@ |
|||||||
|
{"track":"racket","exercise":"leap","id":"282753f427d94beda313070ecdb17f3b","url":"https://exercism.org/tracks/racket/exercises/leap","handle":"JBiason","is_requester":true,"auto_approve":false} |
@ -0,0 +1,39 @@ |
|||||||
|
# Help |
||||||
|
|
||||||
|
## Running the tests |
||||||
|
|
||||||
|
To run the test through DrRacket, simply open the test file and click the 'Run' button in the upper right. |
||||||
|
|
||||||
|
To run the test from the command line, run the test from the exercise directory with the following command: |
||||||
|
|
||||||
|
``` |
||||||
|
raco test <exercise>-test.rkt |
||||||
|
``` |
||||||
|
|
||||||
|
where `<exercise>` should be replaced with the exercise's slug. |
||||||
|
|
||||||
|
## Submitting your solution |
||||||
|
|
||||||
|
You can submit your solution using the `exercism submit leap.rkt` command. |
||||||
|
This command will upload your solution to the Exercism website and print the solution page's URL. |
||||||
|
|
||||||
|
It's possible to submit an incomplete solution which allows you to: |
||||||
|
|
||||||
|
- See how others have completed the exercise |
||||||
|
- Request help from a mentor |
||||||
|
|
||||||
|
## Need to get help? |
||||||
|
|
||||||
|
If you'd like help solving the exercise, check the following pages: |
||||||
|
|
||||||
|
- The [Racket track's documentation](https://exercism.org/docs/tracks/racket) |
||||||
|
- [Exercism's support channel on gitter](https://gitter.im/exercism/support) |
||||||
|
- The [Frequently Asked Questions](https://exercism.org/docs/using/faqs) |
||||||
|
|
||||||
|
Should those resources not suffice, you could submit your (incomplete) solution to request mentoring. |
||||||
|
|
||||||
|
To get help if you're having trouble, you can use one of the following resources: |
||||||
|
|
||||||
|
- [The Racket Reference](http://docs.racket-lang.org/reference/index.html) |
||||||
|
- [/r/racket](https://www.reddit.com/r/racket) is the Racket subreddit. |
||||||
|
- [StackOverflow](http://stackoverflow.com/questions/tagged/racket) can be used to search for your problem and see if it has been answered already. You can also ask and answer questions. |
@ -0,0 +1,47 @@ |
|||||||
|
# Leap |
||||||
|
|
||||||
|
Welcome to Leap on Exercism's Racket Track. |
||||||
|
If you need help running the tests or submitting your code, check out `HELP.md`. |
||||||
|
|
||||||
|
## Instructions |
||||||
|
|
||||||
|
Given a year, report if it is a leap year. |
||||||
|
|
||||||
|
The tricky thing here is that a leap year in the Gregorian calendar occurs: |
||||||
|
|
||||||
|
```text |
||||||
|
on every year that is evenly divisible by 4 |
||||||
|
except every year that is evenly divisible by 100 |
||||||
|
unless the year is also evenly divisible by 400 |
||||||
|
``` |
||||||
|
|
||||||
|
For example, 1997 is not a leap year, but 1996 is. 1900 is not a leap |
||||||
|
year, but 2000 is. |
||||||
|
|
||||||
|
## Notes |
||||||
|
|
||||||
|
Though our exercise adopts some very simple rules, there is more to |
||||||
|
learn! |
||||||
|
|
||||||
|
For a delightful, four minute explanation of the whole leap year |
||||||
|
phenomenon, go watch [this youtube video][video]. |
||||||
|
|
||||||
|
[video]: http://www.youtube.com/watch?v=xX96xng7sAE |
||||||
|
|
||||||
|
## Source |
||||||
|
|
||||||
|
### Created by |
||||||
|
|
||||||
|
- @arguello |
||||||
|
|
||||||
|
### Contributed to by |
||||||
|
|
||||||
|
- @mbertheau |
||||||
|
- @PurityControl |
||||||
|
- @robertpostill |
||||||
|
- @timotheosh |
||||||
|
- @yurrriq |
||||||
|
|
||||||
|
### Based on |
||||||
|
|
||||||
|
JavaRanch Cattle Drive, exercise 3 - http://www.javaranch.com/leap.jsp |
@ -0,0 +1,19 @@ |
|||||||
|
#lang racket/base |
||||||
|
|
||||||
|
(require "leap.rkt") |
||||||
|
|
||||||
|
(module+ test |
||||||
|
(require rackunit rackunit/text-ui) |
||||||
|
|
||||||
|
(define suite |
||||||
|
(test-suite |
||||||
|
"leap tests" |
||||||
|
|
||||||
|
(test-eqv? "vanilla-leap-year" (leap-year? 1996) #t) |
||||||
|
(test-eqv? "any-old-year" (leap-year? 2015)#f) |
||||||
|
(test-eqv? "non-leap-even-year" (leap-year? 1998) #f) |
||||||
|
(test-eqv? "century" (leap-year? 2100)#f) |
||||||
|
(test-eqv? "not an exceptional-century" (leap-year? 1800) #f) |
||||||
|
(test-eqv? "exceptional-century" (leap-year? 2000) #t))) |
||||||
|
|
||||||
|
(run-tests suite)) |
@ -0,0 +1,22 @@ |
|||||||
|
#lang racket |
||||||
|
|
||||||
|
(provide leap-year?) |
||||||
|
|
||||||
|
(define (div-by-4 year) |
||||||
|
(= 0 (remainder year 4)) |
||||||
|
) |
||||||
|
|
||||||
|
(define (not-div-by-100 year) |
||||||
|
(not (= 0 (remainder year 100))) |
||||||
|
) |
||||||
|
|
||||||
|
(define (div-by-400 year) |
||||||
|
(= 0 (remainder year 400)) |
||||||
|
) |
||||||
|
|
||||||
|
(define (leap-year? year) |
||||||
|
(and (div-by-4 year) |
||||||
|
(or (div-by-400 year) |
||||||
|
(not-div-by-100 year)) |
||||||
|
) |
||||||
|
) |
Loading…
Reference in new issue