diff --git a/F#/EvenNumbers.Test/EvenNumbers.Test.fsproj b/F#/EvenNumbers.Test/EvenNumbers.Test.fsproj new file mode 100644 index 0000000..9eb6853 --- /dev/null +++ b/F#/EvenNumbers.Test/EvenNumbers.Test.fsproj @@ -0,0 +1,30 @@ + + + + net8.0 + + false + true + true + + + + + + + + + + + + + + + + + + + + + + diff --git a/F#/EvenNumbers.Test/EvenNumbersTest.fs b/F#/EvenNumbers.Test/EvenNumbersTest.fs new file mode 100644 index 0000000..dded2d5 --- /dev/null +++ b/F#/EvenNumbers.Test/EvenNumbersTest.fs @@ -0,0 +1,28 @@ +module EvenNumbers.Test + +open NUnit.Framework +open FsUnit +open FsCheck + +let mapEqualsFold (list: list) = mapEvenCounter list = foldEvenCounter list +let mapEqualsFilter (list: list) = mapEvenCounter list = filterEvenCounter list + +[] +let mapEqualsFilterTest () = + Check.QuickThrowOnFailure mapEqualsFilter + +[] +let mapEqualsFoldTest () = + Check.QuickThrowOnFailure mapEqualsFold + +[] +let mapEmptyTest () = + [] |> mapEvenCounter |> should equal 0 + +[] +let mapRepetedTest () = + [ 0u; 0u; 1u; 1u; ] |> mapEvenCounter |> should equal 2 + +[] +let mapNoneEvenTest () = + [ 1u; 1u; ] |> mapEvenCounter |> should equal 0 diff --git a/F#/EvenNumbers/EvenNumbers.fs b/F#/EvenNumbers/EvenNumbers.fs new file mode 100644 index 0000000..196b031 --- /dev/null +++ b/F#/EvenNumbers/EvenNumbers.fs @@ -0,0 +1,10 @@ +module EvenNumbers + +let foldEvenCounter list = + list |> List.fold (fun acc x -> acc + ((x + 1u) % 2u)) 0u + +let filterEvenCounter list = + list |> List.filter (fun x -> (x % 2u) = 0u) |> List.length |> uint32 + +let mapEvenCounter list = + list |> List.map (fun x -> (x + 1u) % 2u) |> List.sum diff --git a/F#/EvenNumbers/EvenNumbers.fsproj b/F#/EvenNumbers/EvenNumbers.fsproj new file mode 100644 index 0000000..165becd --- /dev/null +++ b/F#/EvenNumbers/EvenNumbers.fsproj @@ -0,0 +1,12 @@ + + + + net8.0 + true + + + + + + + diff --git a/F#/forSpbu.sln b/F#/forSpbu.sln index 9d54d03..0cb77e4 100644 --- a/F#/forSpbu.sln +++ b/F#/forSpbu.sln @@ -17,10 +17,12 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "PriorityQueue", "PriorityQu EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "PriorityQueue.Test", "PriorityQueue.Test\PriorityQueue.Test.fsproj", "{89A935E8-B5F3-435D-ACC3-A99DD7C66178}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "07.03", "07.03", "{5CA9053B-DE9B-4824-9F19-AEB464E3B9D8}" -EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Homework1", "Homework1\Homework1.fsproj", "{04B15EE4-079A-42ED-ACC8-E2DCD25281C6}" EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "EvenNumbers", "EvenNumbers\EvenNumbers.fsproj", "{A0D24020-05AF-4EB7-912D-75EA330F5192}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "EvenNumbers.Test", "EvenNumbers.Test\EvenNumbers.Test.fsproj", "{E5CF604F-7661-4732-93F7-73B0D5F3FC49}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -58,6 +60,14 @@ Global {89A935E8-B5F3-435D-ACC3-A99DD7C66178}.Debug|Any CPU.Build.0 = Debug|Any CPU {89A935E8-B5F3-435D-ACC3-A99DD7C66178}.Release|Any CPU.ActiveCfg = Release|Any CPU {89A935E8-B5F3-435D-ACC3-A99DD7C66178}.Release|Any CPU.Build.0 = Release|Any CPU + {A0D24020-05AF-4EB7-912D-75EA330F5192}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A0D24020-05AF-4EB7-912D-75EA330F5192}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A0D24020-05AF-4EB7-912D-75EA330F5192}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A0D24020-05AF-4EB7-912D-75EA330F5192}.Release|Any CPU.Build.0 = Release|Any CPU + {E5CF604F-7661-4732-93F7-73B0D5F3FC49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E5CF604F-7661-4732-93F7-73B0D5F3FC49}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E5CF604F-7661-4732-93F7-73B0D5F3FC49}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E5CF604F-7661-4732-93F7-73B0D5F3FC49}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {7937CDA8-8285-4E23-AD1A-FC0F04FEEFE6} = {91E3BDA2-0836-46C2-95F0-02513FD7F13F}