Merge pull request #142 from tgecho/grains-fork

Grains exercise
This commit is contained in:
Erik Simmler 2017-05-28 15:13:02 -04:00 committed by GitHub
commit 6e33e3dc16
7 changed files with 96 additions and 0 deletions

View file

@ -153,6 +153,11 @@
"slug": "gigasecond", "slug": "gigasecond",
"difficulty": 1, "difficulty": 1,
"topics": [] "topics": []
},
{
"slug": "grains",
"difficulty": 1,
"topics": []
} }
], ],
"deprecated": [], "deprecated": [],

View file

@ -0,0 +1,2 @@
module Grains exposing (..)

View file

@ -0,0 +1,9 @@
module Grains exposing (..)
square : Int -> Maybe Int
square n =
if n < 1 then
Nothing
else
Just <| 2 ^ (n - 1)

View file

@ -0,0 +1,14 @@
{
"version": "3.0.0",
"summary": "Exercism problems in Elm.",
"repository": "https://github.com/exercism/xelm.git",
"license": "BSD3",
"source-directories": [
"."
],
"exposed-modules": [],
"dependencies": {
"elm-lang/core": "5.0.0 <= v < 6.0.0"
},
"elm-version": "0.18.0 <= v < 0.19.0"
}

View file

@ -0,0 +1,13 @@
{
"description": "Exercism/Elm",
"repository": "https://github.com/exercism/xelm.git",
"license": "MIT",
"scripts": {
"postinstall": "elm-package install -y",
"test": "elm-test"
},
"dependencies": {
"elm": "0.18.0",
"elm-test": "0.18.3"
}
}

View file

@ -0,0 +1,37 @@
module Tests exposing (..)
import Expect
import Grains exposing (square)
import Json.Encode exposing (Value)
import Test exposing (..)
tests : Test
tests =
describe "Grains"
[ describe "square"
[ test "of 1" <|
\() -> Expect.equal (Just 1) (square 1)
, test "of 2" <|
\() -> Expect.equal (Just 2) (square 2)
, test "of 3" <|
\() -> Expect.equal (Just 4) (square 3)
, test "of 4" <|
\() -> Expect.equal (Just 8) (square 4)
, test "of 16" <|
\() -> Expect.equal (Just 32768) (square 16)
, test "of 32" <|
\() -> Expect.equal (Just 2147483648) (square 32)
, test "square 0 raises an exception" <|
\() -> Expect.equal Nothing (square 0)
, test "negative square raises an exception" <|
\() -> Expect.equal Nothing (square -1)
{-
Where are the bigger test values?!? Because Javascript's numbers
can't represent values higher than `Number.MAX_SAFE_INTEGER`
(i.e. 9007199254740991), we chose to exclude these final values
to avoid the weirdness. A bit more information can be found
here: https://github.com/elm-lang/elm-compiler/issues/1246
-}
]
]

View file

@ -0,0 +1,16 @@
{
"version": "3.0.0",
"summary": "Exercism problems in Elm.",
"repository": "https://github.com/exercism/xelm.git",
"license": "BSD3",
"source-directories": [
".",
".."
],
"exposed-modules": [],
"dependencies": {
"elm-lang/core": "5.0.0 <= v < 6.0.0",
"elm-community/elm-test": "4.0.0 <= v < 5.0.0"
},
"elm-version": "0.18.0 <= v < 0.19.0"
}