Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
33
Task/Catalan-numbers/Nim/catalan-numbers.nim
Normal file
33
Task/Catalan-numbers/Nim/catalan-numbers.nim
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
import strutils
|
||||
|
||||
proc binomial(m, n): auto =
|
||||
result = 1
|
||||
var
|
||||
d = m - n
|
||||
n = n
|
||||
m = m
|
||||
if d > n:
|
||||
n = d
|
||||
|
||||
while m > n:
|
||||
result *= m
|
||||
dec m
|
||||
while d > 1 and (result mod d) == 0:
|
||||
result = result div d
|
||||
dec d
|
||||
|
||||
proc catalan1(n): auto =
|
||||
binomial(2 * n, n) div (n + 1)
|
||||
|
||||
proc catalan2(n): auto =
|
||||
if n == 0:
|
||||
result = 1
|
||||
for i in 0 .. <n:
|
||||
result += catalan2(i) * catalan2(n - 1 - i)
|
||||
|
||||
proc catalan3(n): int =
|
||||
if n > 0: 2 * (2 * n - 1) * catalan3(n - 1) div (1 + n)
|
||||
else: 1
|
||||
|
||||
for i in 0..15:
|
||||
echo align($i, 7), " ", align($catalan1(i), 7), " ", align($catalan2(i), 7), " ", align($catalan3(i), 7)
|
||||
Loading…
Add table
Add a link
Reference in a new issue