File tree Expand file tree Collapse file tree 2 files changed +74
-0
lines changed
Algorithms.Tests/CatalanNumbersTests
Algorithms/CatalanNumbers Expand file tree Collapse file tree 2 files changed +74
-0
lines changed Original file line number Diff line number Diff line change
1
+ using FluentAssertions ;
2
+ using Xunit ;
3
+
4
+ namespace Algorithms . Tests . CatalanNumbersTests
5
+ {
6
+ public class CatalanNumbersTests
7
+ {
8
+ [ Fact ]
9
+ public void GetNumbers_Generate3rdCatalanNumber_Return5 ( )
10
+ {
11
+ var expected = 5 ;
12
+
13
+ var number = CatalanNumberGenerator . GetNumberOn ( 3 ) ;
14
+
15
+ number . Should ( ) . Be ( expected ) ;
16
+ }
17
+
18
+ [ Fact ]
19
+ public void GetNumbers_Generate15rdCatalanNumber_Return9694845 ( )
20
+ {
21
+ var expected = 9694845 ;
22
+
23
+ var number = CatalanNumberGenerator . GetNumberOn ( 15 ) ;
24
+
25
+ number . Should ( ) . Be ( expected ) ;
26
+ }
27
+
28
+ [ Fact ]
29
+ public void GetNumbers_Generate0rdCatalanNumber_Return1 ( )
30
+ {
31
+ var expected = 0 ;
32
+
33
+ var number = CatalanNumberGenerator . GetNumberOn ( 0 ) ;
34
+
35
+ number . Should ( ) . Be ( expected ) ;
36
+ }
37
+
38
+ [ Fact ]
39
+ public void GetNumbers_GenerateNegativePos_Return0 ( )
40
+ {
41
+ var expected = 0 ;
42
+
43
+ var number = CatalanNumberGenerator . GetNumberOn ( - 1 ) ;
44
+
45
+ number . Should ( ) . Be ( expected ) ;
46
+ }
47
+ }
48
+ }
Original file line number Diff line number Diff line change
1
+ using System ;
2
+
3
+ namespace Algorithms
4
+ {
5
+ public static class CatalanNumberGenerator
6
+ {
7
+ private static double Factorial ( double n )
8
+ {
9
+ if ( n <= 0.0 )
10
+ return 1 ;
11
+
12
+ return n * Factorial ( n - 1 ) ;
13
+ }
14
+
15
+ public static double GetNumberOn ( int n )
16
+ {
17
+ if ( n <= 0 )
18
+ return 0 ;
19
+
20
+ const double topMultiplier = 2.0 ;
21
+ var result = Factorial ( topMultiplier * n ) / ( Factorial ( n + 1 ) * Factorial ( n ) ) ;
22
+
23
+ return Math . Ceiling ( result ) ;
24
+ }
25
+ }
26
+ }
You can’t perform that action at this time.
0 commit comments