module Pangram | |||||
let isPangram (input: string): bool = | |||||
let lowerInput = input.ToLower() | |||||
['a'..'z'] |> List.filter lowerInput.Contains = ['a'..'z'] |
<Project Sdk="Microsoft.NET.Sdk"> | |||||
<PropertyGroup> | |||||
<TargetFramework>netcoreapp3.0</TargetFramework> | |||||
<IsPackable>false</IsPackable> | |||||
</PropertyGroup> | |||||
<ItemGroup> | |||||
<Compile Include="Pangram.fs" /> | |||||
<Compile Include="PangramTests.fs" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" /> | |||||
<PackageReference Include="xunit" Version="2.4.1" /> | |||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.2" /> | |||||
<PackageReference Include="FsUnit.xUnit" Version="3.8.1" /> | |||||
</ItemGroup> | |||||
</Project> |
// This file was auto-generated based on version 2.0.0 of the canonical data. | |||||
module PangramTests | |||||
open FsUnit.Xunit | |||||
open Xunit | |||||
open Pangram | |||||
[<Fact>] | |||||
let ``Empty sentence`` () = | |||||
isPangram "" |> should equal false | |||||
[<Fact>] | |||||
let ``Perfect lower case`` () = | |||||
isPangram "abcdefghijklmnopqrstuvwxyz" |> should equal true | |||||
[<Fact>] | |||||
let ``Only lower case`` () = | |||||
isPangram "the quick brown fox jumps over the lazy dog" |> should equal true | |||||
[<Fact>] | |||||
let ``Missing the letter 'x'`` () = | |||||
isPangram "a quick movement of the enemy will jeopardize five gunboats" |> should equal false | |||||
[<Fact>] | |||||
let ``Missing the letter 'h'`` () = | |||||
isPangram "five boxing wizards jump quickly at it" |> should equal false | |||||
[<Fact>] | |||||
let ``With underscores`` () = | |||||
isPangram "the_quick_brown_fox_jumps_over_the_lazy_dog" |> should equal true | |||||
[<Fact>] | |||||
let ``With numbers`` () = | |||||
isPangram "the 1 quick brown fox jumps over the 2 lazy dogs" |> should equal true | |||||
[<Fact>] | |||||
let ``Missing letters replaced by numbers`` () = | |||||
isPangram "7h3 qu1ck brown fox jumps ov3r 7h3 lazy dog" |> should equal false | |||||
[<Fact>] | |||||
let ``Mixed case and punctuation`` () = | |||||
isPangram "\"Five quacking Zephyrs jolt my wax bed.\"" |> should equal true | |||||
[<Fact>] | |||||
let ``Case insensitive`` () = | |||||
isPangram "the quick brown fox jumps over with lazy FX" |> should equal false | |||||
# Pangram | |||||
Determine if a sentence is a pangram. A pangram (Greek: παν γράμμα, pan gramma, | |||||
"every letter") is a sentence using every letter of the alphabet at least once. | |||||
The best known English pangram is: | |||||
> The quick brown fox jumps over the lazy dog. | |||||
The alphabet used consists of ASCII letters `a` to `z`, inclusive, and is case | |||||
insensitive. Input will not contain non-ASCII symbols. | |||||
## Running the tests | |||||
To run the tests, run the command `dotnet test` from within the exercise directory. | |||||
## Autoformatting the code | |||||
F# source code can be formatted with the [Fantomas](https://github.com/fsprojects/fantomas) tool. | |||||
After installing it with `dotnet tool restore`, run `dotnet fantomas .` to format code within the current directory. | |||||
## Further information | |||||
For more detailed information about the F# track, including how to get help if | |||||
you're having trouble, please visit the exercism.io [F# language page](http://exercism.io/languages/fsharp/resources). | |||||
## Source | |||||
Wikipedia [https://en.wikipedia.org/wiki/Pangram](https://en.wikipedia.org/wiki/Pangram) | |||||