-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmmch.hs
28 lines (25 loc) · 981 Bytes
/
mmch.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
-- This program is free software. It comes without any warranty, to
-- the extent permitted by applicable law. You can redistribute it
-- and/or modify it under the terms of the Do What The Fuck You Want
-- To Public License, Version 2, as published by Sam Hocevar. See
-- http://sam.zoy.org/wtfpl/COPYING for more details.
import Rosalind
factorial :: Integer -> Integer
factorial n = product [1..n]
main = do
contents <- readFile "mmch.txt"
let fasta = parse contents
let rnas = snd $ unzip fasta
let counts = count $ rnas !! 0
let lookup x = fromIntegral $ defaultLookup 1 x counts
let aCount = lookup 'A'
let uCount = lookup 'U'
let gCount = lookup 'G'
let cCount = lookup 'C'
let auMax = max aCount uCount
let auMin = min aCount uCount
let gcMax = max gCount cCount
let gcMin = min gCount cCount
print counts
print $ (auMax `choose` auMin) * (factorial auMin)
* (gcMax `choose` gcMin) * (factorial gcMin)