Solve a few problems
This commit is contained in:
commit
59de67963d
14 changed files with 101 additions and 0 deletions
28
05_fibd/fibd.nim
Normal file
28
05_fibd/fibd.nim
Normal file
|
@ -0,0 +1,28 @@
|
|||
import os
|
||||
import std/strutils
|
||||
import sequtils
|
||||
|
||||
let n = parseInt(paramStr(1))
|
||||
let m = parseInt(paramStr(2))
|
||||
|
||||
# pairsByAge is a `seq` which contains the number of pairs
|
||||
# by their age.
|
||||
# So, element 0 is newborns, element 1 is 1-month-old pairs, etc.
|
||||
var pairsByAge = newSeq[int](m)
|
||||
pairsByAge[0] = 1
|
||||
|
||||
for i in 1 ..< n:
|
||||
# Calculates the new pairs at generation i.
|
||||
# This is the sum of all adult pairs at previous generations,
|
||||
# i.e., all elements of the `pairsByAge` array from 1 to m.
|
||||
# This assumes k = 1.
|
||||
var newPairs = pairsByAge[1..^1].foldl(a+b)
|
||||
|
||||
# Calculates the number of pairs for each age at this generation.
|
||||
for j in countDown(m-1, 1):
|
||||
pairsByAge[j] = pairsByAge[j-1]
|
||||
|
||||
pairsByAge[0] = newPairs
|
||||
|
||||
let total = pairsByAge.foldl(a+b)
|
||||
echo $total
|
1
05_fibd/rosalind_fibd.txt
Normal file
1
05_fibd/rosalind_fibd.txt
Normal file
|
@ -0,0 +1 @@
|
|||
85 20
|
Loading…
Add table
Add a link
Reference in a new issue