Skip to content

Commit 4bc5c34

Browse files
Implement algorithm of average (mean) computation (#24)
1 parent f6e9379 commit 4bc5c34

File tree

7 files changed

+33
-0
lines changed

7 files changed

+33
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,3 +348,4 @@ MigrationBackup/
348348

349349
# Ionide (cross platform F# VS Code tools) working folder
350350
.ionide/
351+
.idea/
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
namespace Algorithms.Tests.Math
2+
3+
open Microsoft.VisualStudio.TestTools.UnitTesting
4+
open Algorithms.Math
5+
6+
[<TestClass>]
7+
type AverageTests() =
8+
9+
[<TestMethod>]
10+
member this.Test() =
11+
Assert.AreEqual(None, Average.average List.empty<float>)
12+
Assert.AreEqual(Some 2.0, Average.average [1.0; 2.0; 3.0])
13+
Assert.AreEqual(Some 1.0, Average.average [1.0])
14+
15+

Algorithms/Math/Average.fs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
namespace Algorithms.Math
2+
3+
module Average =
4+
let inline average (xs: ^a list) =
5+
match xs with
6+
| [] -> None
7+
| _ ->
8+
let sum, count = List.fold (fun (sum, count) current -> (sum + current, count + 1))
9+
(LanguagePrimitives.GenericZero, 0)
10+
xs
11+
LanguagePrimitives.DivideByInt sum count |> Some

Algorithms/Strings/HasPrefix.fs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
namespace Algorithms.Strings
2+
13
module HasPrefix =
24
/// <summary>
35
/// Reports string has specified prefix or not.

Algorithms/Strings/HasSuffix.fs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
namespace Algorithms.Strings
2+
13
module HasSuffix =
24
/// <summary>
35
/// Reports string has specified suffix or not.

DIRECTORY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
* Math
55
* [Absmaxtests](https://github.com/TheAlgorithms/F-Sharp/blob/main/Algorithms.Tests/Math/AbsMaxTests.fs)
66
* [Absmintests](https://github.com/TheAlgorithms/F-Sharp/blob/main/Algorithms.Tests/Math/AbsMinTests.fs)
7+
* [Averagetests](https://github.com/TheAlgorithms/F-Sharp/blob/main/Algorithms.Tests/Math/AverageTests.fs)
78
* [Abstests](https://github.com/TheAlgorithms/F-Sharp/blob/main/Algorithms.Tests/Math/AbsTests.fs)
89
* [Factorialtests](https://github.com/TheAlgorithms/F-Sharp/blob/main/Algorithms.Tests/Math/FactorialTests.fs)
910
* [Perfectnumberstests](https://github.com/TheAlgorithms/F-Sharp/blob/main/Algorithms.Tests/Math/PerfectNumbersTests.fs)

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ This repository contains algorithms and data structures implemented in F# for ed
99
+ [Abs](https://github.com/TheAlgorithms/F-Sharp/blob/main/Algorithms/Math/Abs.fs)
1010
+ [Abs Maximum](https://github.com/TheAlgorithms/F-Sharp/blob/main/Algorithms/Math/AbsMax.fs)
1111
+ [Abs Minimum](https://github.com/TheAlgorithms/F-Sharp/blob/main/Algorithms/Math/AbsMin.fs)
12+
+ [Average](https://github.com/TheAlgorithms/F-Sharp/blob/main/Algorithms/Math/Average.fs)
1213
+ [Factorial](https://github.com/TheAlgorithms/F-Sharp/blob/main/Algorithms/Math/Factorial.fs)
1314
+ [Fibonacci](https://github.com/TheAlgorithms/F-Sharp/blob/main/Algorithms/Math/Fibonacci.fs)
1415
+ [Greatest Common Divisor](https://github.com/TheAlgorithms/F-Sharp/blob/main/Algorithms/Math/Greatest_Common_Divisor.fs)

0 commit comments

Comments
 (0)