| # Reverse String | |||||
| Reverse a string | |||||
| For example: | |||||
| input: "cool" | |||||
| output: "looc" | |||||
| ## 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 | |||||
| Introductory challenge to reverse an input string [https://medium.freecodecamp.org/how-to-reverse-a-string-in-javascript-in-3-different-ways-75e4763c68cb](https://medium.freecodecamp.org/how-to-reverse-a-string-in-javascript-in-3-different-ways-75e4763c68cb) | |||||
| module ReverseString | |||||
| let reverse (input: string) = Seq.toList input |> List.rev |> Array.ofList |> System.String |
| <Project Sdk="Microsoft.NET.Sdk"> | |||||
| <PropertyGroup> | |||||
| <TargetFramework>netcoreapp3.0</TargetFramework> | |||||
| <IsPackable>false</IsPackable> | |||||
| </PropertyGroup> | |||||
| <ItemGroup> | |||||
| <Compile Include="ReverseString.fs" /> | |||||
| <Compile Include="ReverseStringTests.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 1.2.0 of the canonical data. | |||||
| module ReverseStringTests | |||||
| open FsUnit.Xunit | |||||
| open Xunit | |||||
| open ReverseString | |||||
| [<Fact>] | |||||
| let ``An empty string`` () = | |||||
| reverse "" |> should equal "" | |||||
| [<Fact>] | |||||
| let ``A word`` () = | |||||
| reverse "robot" |> should equal "tobor" | |||||
| [<Fact>] | |||||
| let ``A capitalized word`` () = | |||||
| reverse "Ramen" |> should equal "nemaR" | |||||
| [<Fact>] | |||||
| let ``A sentence with punctuation`` () = | |||||
| reverse "I'm hungry!" |> should equal "!yrgnuh m'I" | |||||
| [<Fact>] | |||||
| let ``A palindrome`` () = | |||||
| reverse "racecar" |> should equal "racecar" | |||||
| [<Fact>] | |||||
| let ``An even-sized word`` () = | |||||
| reverse "drawer" |> should equal "reward" | |||||