Solve a few problems
This commit is contained in:
commit
59de67963d
14 changed files with 101 additions and 0 deletions
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
*
|
||||
!*.*
|
||||
!*/
|
11
01_dna/dna.nim
Normal file
11
01_dna/dna.nim
Normal file
|
@ -0,0 +1,11 @@
|
|||
import std/strformat
|
||||
import std/tables
|
||||
|
||||
var baseCounts = {'A': 0, 'C': 0, 'G': 0, 'T': 0}.toTable
|
||||
var dnaString = readFile("rosalind_dna.txt")
|
||||
|
||||
for c in items(dnaString):
|
||||
if c in baseCounts:
|
||||
inc(baseCounts[c])
|
||||
|
||||
echo fmt"{baseCounts['A']} {baseCounts['C']} {baseCounts['G']} {baseCounts['T']}"
|
1
01_dna/input.txt
Normal file
1
01_dna/input.txt
Normal file
|
@ -0,0 +1 @@
|
|||
AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC
|
1
01_dna/rosalind_dna.txt
Normal file
1
01_dna/rosalind_dna.txt
Normal file
|
@ -0,0 +1 @@
|
|||
CTTCACCTGGTAGCGACTGACTTTTCCAGCGCGGTGGCATTACTAGTTCGCTAACTAATTTGAAACTAGTTACAACGCAGACATCTAGCTAGTCTTCTCCGCTAACTCCCCCCGTCTCAGTTATACCTCGTACAAATGACCCGCAAATGGGAGTGGACACCGAATTTGGATGTCTTAATCTGAGTGCCCGACATTCAGCTGCCTGTACAAAATTGGTCGCATCTTTAGAGGATTGTATGAACCTAATGGTGGATCGCAGTTGATACACCATAGAGGATGACCGCGGCGGTTTAGAGCTTATTAGCGGCGGTTAAACAATAGGGATCAAGTGATGTAAGCTATAATGCATCCGACTGGGCCGCATTTTCGTTGCTTGGGCTATCGCGGGCCGAGTTCGTTTGTGTGGCCTCGGTTACATCCCCTTAGACGCAAAGTTATCGTCTACCGAACGAAACTTTTCCGCAGTATTCAACTTGGTGATGCAGACAATGACAGAAAGAGTTAGGATACAGTGACTACGCTAAATCGATAAGTCCACACTCGGGCCAGCATGTACTTATCCCGCATATTATAACCGATGGTCGTCTGAAGGAATGAACGCTTACCTCGTTCCTACTGGATTAGAGTGAAACATGTTATCTGCAAGTCCTTACTACACCAGTTAAAAATGTTACGTGCTTTTGTACACGAGTACGCTCCCAGGTTATCTCGTTAACGAACTGTAATTCGCCTCCGTGTACTATAAGCGTACTCTCTAAAAGAGAAGAATACTAAGCGCCGTGACTACCAGATGGGGATCAGTCGTGGAGGGCTGCACGCCGGCTTCCTTCTGACACAGCCCCAGGATCCTCGGCTTGCCAGGGGTTCGTCATGTATAGGACGATCTACATCCGCGCCATTCAGATTCTGACTCCATCCGCTGGAATGATGGGTTATGATCTATGGGGGCGAATGGATAGTACCT
|
1
02_rna/input.txt
Normal file
1
02_rna/input.txt
Normal file
|
@ -0,0 +1 @@
|
|||
GATGGAACTTGACTACGTAAATT
|
7
02_rna/rna.nim
Normal file
7
02_rna/rna.nim
Normal file
|
@ -0,0 +1,7 @@
|
|||
import os
|
||||
import std/strutils
|
||||
|
||||
let fileName = paramStr(1)
|
||||
let dna = readFile(fileName)
|
||||
let rna = multiReplace(dna, ("T", "U"))
|
||||
echo rna
|
1
02_rna/rosalind_rna.txt
Normal file
1
02_rna/rosalind_rna.txt
Normal file
|
@ -0,0 +1 @@
|
|||
CGGATAGGCGCACTGTGGAGGTCGAGAACGAGTAATAGATGTCTTAGACGCAGTTCTTATATTCTAATAACCAAACCCAAGGGTCCAAGTAAGACGAGTGTAAAACGGCCCACGTGTTTTAGCCCGTGTCGATGTGTGATAGCTGCCGTCTGCTTTAGGTCTCGGCAGGTCCGATCCCTGATTTGCCAGTGGGGGCATGCTGAGAAGTTTCGTATAGATGAATAATCTCTCTAAGACATCTCCGTAAAGGTAAAAACTGTGACCGCCGTAGTGACGCATCTCGCCGCGCGACCACTCATCACCTTGAACAAATGCACGTAATAGATATTTAGGCTGCGTATGTTTTGAGTTCGGGCGACAGTGCGCTTGGCGGTCGCAGAGGGGCGGAGGCGTACGGGCTGTCCGCAACTGTCCTTCCCGGCGACCCTAGATAGGGAATGCAAACCCCCAGCTGCCCCTAATACTAACACCCGCATTTCCCATTACTTCTCACAATAGGGCATTGGTTCACTGGTGCACTAGATGGCAGGGTACGGAGTGGGCTTGGCTTCGAACGAACAAACGACGTAGGCGGTGTTATCTAAATTAGAGATGGCTTAAGTCCTAAAATCCTCACATCGTAACGAGGATCTAATTGGGATTTCTCTTTACCGGACCAGAGATACCTGTCAGCCCAGGTCTTGAATCCAAGTGATCACCGATGGAACATTAATTACTTCTGATTGCCCGAGCTTAACTAGGTCTATTGCCGAAAAAGTCTAAGAAGTCTGAGTAACTCTCGACCCTCGCACGTCATTCACGCCGTTTATTTCGAACGCTTTCGCGGTCGTTTTATGATATAGGCAGATGCCAGGACGCGTACAAGCGAATACTCACCCCCAAGTTCCCAAGATCTCGTTCGTCCGAGTAGGGAGAATTAGTCGCTCTACCTGGGGCCTTCGCGTGGTCTAACTTAGAAACTTTAGTCACGGTGGTCTTAGTGGTAATGACCACCTCA
|
1
03_revc/input.txt
Normal file
1
03_revc/input.txt
Normal file
|
@ -0,0 +1 @@
|
|||
AAAACCCGGT
|
28
03_revc/revc.nim
Normal file
28
03_revc/revc.nim
Normal file
|
@ -0,0 +1,28 @@
|
|||
import os
|
||||
|
||||
proc complement(c: char): char =
|
||||
return case c:
|
||||
of 'A': 'T'
|
||||
of 'T': 'A'
|
||||
of 'C': 'G'
|
||||
of 'G': 'C'
|
||||
else:
|
||||
raise newException(ValueError, "Invalid letter")
|
||||
|
||||
let fileName = paramStr(1)
|
||||
var dna = readFile(fileName)
|
||||
|
||||
for i in 0 .. dna.len div 2:
|
||||
let j = dna.len - 1 - i
|
||||
if i > j:
|
||||
break
|
||||
elif i == j:
|
||||
dna[i] = complement(dna[i])
|
||||
else:
|
||||
let temp = dna[i]
|
||||
dna[i] = complement(dna[j])
|
||||
dna[j] = complement(temp)
|
||||
|
||||
echo dna
|
||||
|
||||
|
1
03_revc/rosalind_revc.txt
Normal file
1
03_revc/rosalind_revc.txt
Normal file
|
@ -0,0 +1 @@
|
|||
GCATCGGTCTTGGTACTGTCGGAACCGATATCTCTCGCCTTCGCTGAGTTGGTGGGCGTTGATACAGCCCAACATCCTCACACAGGAGCATTAAGTGACACCATGTGCGACGGCTGCCTCGCGAGCGAACGCCGCATTTCTCATAGTAGGGACTTGGTGATGGACATGATGTAGGCAGTGGGTCTGTCGCCGCCACCGCGCGCGTACTGGTCATTGACTAGGCTGTGTACTTAGGCATACAGCTTACGACTGACTGGACTTCCAATAACGTTATCGTTCTAGACTTGTTACGTAGGGAATGTACTTTGTTCGACTGACCTTCGTGACCCTGCTGTGCCCCGGGGACTACTACATTTGCTTTCACGCACGGTAGGGTTAACGTGATGGCTTGAAGGGGGCTCACCTCATAGGGATATGCTACACACCGACGAGGCATGACCATATGGGAGTCACACTGGCAAATTAAGGGCAGATCCGTCTCAATATGTCCCAAGTCAATGACTGGCGCCGACAGTGTCTCACGAAGATACACAGGGTCGAACATAGCAAGAGGTGAGAGGGCGGGGCAGCACTGTTAGGCCGCGCAATCCCGCTCGAGGATCACAGGAAGGGGCCCAACAGTAGTGACAGACAATCGGTTATGTCGGCCCTCCAACTGCGGCCTTACGAAAACTACAACTCCGATGAACGCACGGTCTACGGTCGTGTCTATGTGTATCTAACAGTTGTACATATTTCAGGAGTCAGACGCAGAACAACGGAAAAACAGCGCTCGAGACTTTGCCGCTAAGTAATCGCAGATCTTCAAATCGCTAGTCTGAATACACTAATCCGAAACTCTTGATGCACCTTGTTCTGCGTATCCGCTTTATCT
|
16
04_fib/fib.nim
Normal file
16
04_fib/fib.nim
Normal file
|
@ -0,0 +1,16 @@
|
|||
import os
|
||||
import std/strutils
|
||||
|
||||
let n = parseInt(paramStr(1))
|
||||
let k = parseInt(paramStr(2))
|
||||
|
||||
var adultPairs = 0
|
||||
var newbornPairs = 1
|
||||
|
||||
for i in 1 ..< n:
|
||||
var adultPrevPairs = adultPairs
|
||||
adultPairs = adultPairs + newbornPairs
|
||||
newbornPairs = k*adultPrevPairs
|
||||
|
||||
let pairs = adultPairs + newbornPairs
|
||||
echo $pairs
|
1
04_fib/rosalind_fib.txt
Normal file
1
04_fib/rosalind_fib.txt
Normal file
|
@ -0,0 +1 @@
|
|||
32 5
|
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