-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprot.hs
More file actions
28 lines (22 loc) · 10.1 KB
/
Copy pathprot.hs
File metadata and controls
28 lines (22 loc) · 10.1 KB
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
{-
Given: An RNA string s corresponding to a strand of mRNA
(of length at most 10 kbp).
Return: The protein string encoded by s.
-}
makeTuple [] = []
makeTuple (x:y:xs) = [(x,y)] ++ makeTuple xs
s = "AUGUGUAUACAUUGCUCGCGCAGGUCGCAGAGACCCCUAACUAAUCGCAAGUUGGAAUGUCUCUACAGGAGCCCUGUCGAGCAUCUAAAUGCUCUUGGUGAUCGCGGUGACAAGCAUCGACACACAGUCUACCGUUGGCAUAAUCUAGGCGACCCAUGUCGGGAUCAAUCGUUCCAGUCACCCUCACCCUUACAUGCCAAACACCGAAUUUUCUCUACUCGUUGGAAAGUGCUCAUUAUCACUCACACCCCACUAUCCGGUAUAUCCGCGCUAAUCCCUCAAAGUAUCAUCAAUGCUGCUAACCUUUCAUACGUAACUGGCUACGAGUCAACUAUCACUCCGAGUCGAUGUGGAUCGGCUGCGUUUGGAGUACAACAAAGGCUCACCGGAGAUACGGUCGCGCCACGUGUCUGUCAGCCUGACGGCUCGGUGAGACUCUUGAACGAACUAUGGCAUAAGAUGGGACACGACUUUCUUAACGCUCAUCGCCUUUCCUCAGUCCAUCAGGACCGUAAGGGGCGAGUCAGACGGUUUAUGCUCUGUUGUUUGCGCACACUCACUUGCACUUUAAUUCAAGCUGUAGUCAUGGCAAGGCAGCUUUUCGACCAUAGGAACGAGGGGCACGCGCCGGAUCUGAGAUGCCCGCCAGGUUUCCUGUACGCCACCGUCGGGCACUCUCUAUACAAAGUAAGAGCGAAUGCCUAUCUCUGGACCAUACGCGUCCACUCUGACGAGGUUGGAUUCAUGUCGAAACUGUCAACCGCAUGCAGGCGCCCAACUUAUCCUUGGCCAAUCAUUUAUCUGCUAGGGAAUUUCGCAACUAAUAACGCCUACUGCUCCCAUAACUCAGGUCCUAGUACCAAGUCAUCCGAACGCCUCCGUGGACGGUACUCGCAUUGCCCCUAUGGACGCUUAAAUUCCCCGACGGUCUAUGGCUACGAUUCUACGUGGAGCAGACAGCCUGAUAAAUCCACGGAACCUGACUAUAAUUGGAGUUUCAUUCUCAAUCACUGUGGUUGCGUGGGGGCCGUCGGCGGUCGUAGCGAAGGCCCCGAUAAUCGUUCGAUGGUCCAAGUAUCCGUGUCUGCUCAAUGUGGGUGCCACUGUAUAAUUGAGAAAGUGGUGGCUGCUUGCCGGCCACGUCGGCUAGUACAUAUUAAUGUUCGCGACCUAUCAUCGAGGACCCCGCUCGAGGGGGCUUUGCGAGCAGCAUGUCGUGGGGUUACGACCGUCAGUGGUUACUUCUACACACUGAUCCGGCGAGGACUCCCACAACAAACUACCCGCUCAAUAAAGAACUCGGGAUGGAGGUCAUCUGAUGUGGAUACUUCACAUAUAGAGCAACAUCCUCGGUCGAGCACAAGGGACAAGUCUGGGGAAGAGCUAUCCAGGGUUGUUGUCCCUAGAUCGCGACUCGAGGCGCAAAUCUCGCAUCGCGCCUCCGGCAGCUUUCCGGAUACGGCAGCAGACGCCGUUCCAACCACUGACGUCCUAGCUAUGAAGGGAGCACACGUUGCGCGCGCUUACAUGCUAAAAUCCAUACCACGACAUCUGAGAUGGCAUCAGCGAAUGGCCCGGUCCAUGGGAGCUGAGUUAGCUGGACCUUACAUGUUUACUCCUCCCUGGAUAAGUCUAUUCUGGACUAUUUGUAUGGUUUUCUACCAACUGCCCUGCCGUUCAAGUGUUCCGGCUCUAUUCGGCGAUGAACAAGUCGCCAGAUGUAAGCAUGAGCUGUUCACAGUUUGUGAUGAGACACGGCCAGCUAAUCGUGUUUGUGUUAGUCUGGGCGGCGUUAGGGCCGAAAGUGGACGAAAAUGCUGUAUUUUUUUGCGUCACACUGGUUAUAAGAAGGGCCUCCCCGUGGAGAAGGGAAUCUCUCAUUCAGUCGCUUUACAAUGCCUACUCUUAGAACGCUUAGACCUGUCCGCAACGACGACCCAUCGCGCUAGGUCCUCAUUAUUAGCAUUAAAUCGUCAACUACACUAUUGGUCGCCUAUACACCCUGCUGCCGAGUAUUUUGGCGUACCUAAGGAGCCGGACCUUACCCGGGGAAGUAUCGUAACGUUUCUUAAAAGCUCGAAGGUUAGACUUAGAGUAUGUCAGAGAAGGAUCUUUCUAGACGUGGGCCAAAAGUACAUAAUAGUAGGCAUAAUAUGUAUCGCACAAAACUUAUCCCCAUUCUCGCGCGAUUGUGCGGCGCGGGUAGUCGGUCUCACCCUAUUACCAGAAAGGGGGGGUCCCGAUCCUACUACUCACGCCUGUCUGUCGGGAACGUCUUACGUGAAUGUCUCAUGGUUACGAAAUGAUGUCUUCCCAUCCGCGGCUUGUCUUCACUUUACACGGAUUCGAGCCUCCAAUUGGUGUACGACUCUCUCAGACCCGUGCCUAGUGCGACAGGACGUUAACCGAGAGAGAAUUAUCAUGGUCCGGCUAUUACACUUAUCUCGGAUUUCCCCGCAGUUACGGAUCGUCGCUGACUGCACAUAUUGUUUUGUACCUUCACGUCAGGCUUCUAUACGAGAGUGGAGAGAAUCGGUGUGGCCAACCGCUGUGAUGCCCCUGGACCAGUCCUUUGAAACUCCGCCUAUGAUACCGAGGGCUUUGUGCGUGACGCUCGACGAGGUCCGAAUAAACAGUAACUCGAUAGACGUGGUAUAUCUGGAACGACGAGACCUAUGCAUGUAUUCACAAGGUACCGAAGGCAUAAUCUGCCUUGCAUCUCGGUACAGGAAGUUUCCAUCCACUAAUAACAUAGGGGGACGAAGACUGCGAUGCCCCAACGGGGAACAGCGCAAGGUUUACAAUAAAUUCCCUACAAGGUUUAACAUCUGGCAAACUCCCAAGCGCUGGAGAUUCCUGAUACGACGACGUGGAGAUAUUCGGUCCUAUGACCACAGAUGCAUAUACUCGAAAAGGCCUCAUCUUACCAAUCCAUUCAAUUCGGGAACGCUACAGAUGAUUAAAUUUCUCGUCGCAAUCCUCGUUCCCGUUCGGCAGAACUGCAGCCUUCUAGACCUCCACGACCUGCGCUGCGUCCAGGAGCGUUCUUCCACCUUAGUGUUUCUUUAUAUAAUUCAACUGGAUAUUCGCUAUAGUUGUCCACAGGAGCCUCGUUCUCUGCUACUAAAUUCUCAAAAAAGGGACUACAUUACCUAUCGUCUUAAUACGACAAAUUGCAGCUCCCCGCGACGUAUCGGCAGAUGGGGCUUCCUACAUACUAUUCUCCUUGGGUUCGCUGCAUCACGUUCGGCACACCAGAACUUAAGAAUAAGUCUUAGAUUAACCUCCUUUUCUGUCGGUAGGGCAGGUUUGGGCACGUCUUUAGGCCUUCGUCACCCUCUCCAAACCAUGAAUUCCUUCCUGUUGCUUAUGAUUCCAUGUCUGCGACAAGGUCAUCCACCAUCCCACGCCUGGUUGGGGGGGUUGAUAGCUAGUGAAGCUACACUUCAAUGCAGGUUCAGCCGGGAUGCUGGGCGAAUAUCAAAGGAAAAGGCCCAAAGGACGGGCCGUAGUCGUGUGCUGUUAGACCCAUUUAUAACAAGGGGCUGCAAUGUAGAGACUGUUGAAAAAUUCAACAUAAGUCGACUAUCCUCGAAACCGCAGGAAUGGAAUCGGUUGCUGCAUCACUUAAGAUGGGUUAUGUCUCAAGGACAGCCCGAAGGUGGUAGCAAGAAGCCCCUUCAGGAAUCCGCAGCAAGGGGCAGCCGACGUGCUCAACCUCUGGUUGUGAAGACCCGCAAAGGCGCUGACCCAGAGUGGGUGCUGUCAAUUCGUGACCGGCUGGAGUCACUCAGUGAGCAAUUUCCCUUGUUGCCGUGGAGGGCCGAUAUAUUACUCCGCAAGCUAAGAGGGUUAUCGUUCCCCAUCACGGCUGUUUAUAGAUGUUUGCUAGAAUCCCCUAGUAUCAUGAGUUGCCUUUGCUCCCGUUCACCAGAGGAGGGGGACAGCUCUCCGUACUUCCGCCCUUGCCGCAGACCACGCGUCCCAGUAGAUUUCCUCCGGGAUGUCGCGAACAGCCAGCCUAGCACACUGACCGCAGCUCCUCAAGAAGCGUGGCUGGGUACCUCAUAUUGUACCUUCGCUGUUUUGGCGUCGGUAUCUCUCUGCUCCCUCGAUCGGCGUCCUUACCGGGCAGACGAGCACCGUGUUUAUUGGGGCUCUGCGUACAACAGAGGUAUAGCUAUUCCCAAGGAGCAGCACGAUAUUGUGGACCAUAUAAUGUCAAAUACGGUACAGAAGACCCGGCUACCGUGGGUCAAGCGUAAUUGCUUAUUUCAGAGGCCAAUACGAAGGCUAUUCGUUCAAGGUAUCCCGGCUCCAAGGCGUGGCGGUCAGGCGCCCCCGCGUUAUUUGAUACAUCGGGACCAUUUCGCUGUGAAUCGUCCCGAGAUACGUACGUUUGCAAGACAGUCACCUAGUCGAGGACUCUAUGAUGCUGGUACAUCGACCGUCUCAAUUGCAGACGCGGAGGACAAACAGCAACCCACCCUUAAAACCCUUCAUAGUGAGCAUUUUAGUCAAGAUUCCUUCAACAGUACGGUGGGUGGCGUCUGUCCUGCCGAAUCAACCGCCAACCAGAAACUGACCCGCGGCACAACCUAUAAGAUCGCAGAUUUUCGCGCCCUGGUAGCUAUCGGUGUGAAGUCGACAGGCAGGUGCGGCUAUUUUCCCCUUGUACGCCCCAGUAGGAGUCCUAAACUAGCACGCUAUGUGUGUCAUCAGGGAGCUCAACCUUGCCAUGAGGUAUCGCCAGAGGGGAGCUCAGUGUUGGGGGGCCAUAAAAACCUCGUGCAUAGAAACGUCCUGUUCACUUUGUCCUUUCGGACGGGGUAUGGACAUGUUGUUGGCGACGGCUUGUAUUGCUCCACUGUCAACGCAAGAACAGAGAGAGUGGGAUUUAGGCACGACGGUCCUGACUUGCUGCUAAUCGCGUCGAGUGCGAGUAAACACGAUUUACAGGUCUGUCAGUUGAAGCCUCUCUUUCCUCCAGCAUACCUAGUAGCCUGGGAACUCGAGCUCCACCUGUUUUACGCGCGAACGACCACGUAUAUGGCUCUCUGUUCAGAGGGCCCCCCGAGACAACCGUGUCAGGCUAGGAGUCUAAGCAACGUUCCUAUAAUCCUGGUCCGUGGCGGCUCUCGCGAGAAUCUACUUAACAUGAAACUAACCAGUCUUUUAUUCUGUCUCCGCUCGGAGUAUUCGAGAGGAGUGACCAGAUCGUGGCGAGUGAUGUGUGAGGAGCAAUCAAUGGCUAAAGAUGGAGGACUCGCGCGGCCACAGUACUUAUCCUUUUUCGGUGUUACGGCGGCGGUAUUGACCGCGCCGUCACAGAUGAGACUUGCAAAAAACCGGAACAAAGUCACCACUACCGUCUUUGCGGACGGGUUCGUUGGGGCCUUUCCUCAAACGUUUCGAAUCAUCGGAGCCGAGUGGGGGUCACUAGAACCUGCGCUGGUCUUGAACCGAUGUACUUAUCCUAUUCUGAUGCGUGAUGCAGGUGGUUGUUUAUUCCGGCUGAAGGUCGAAUUAAUCUGGUUAAGUACCCAGAACCUGGGACAUACCGUCCCGUGGGAUGUGUCGAGCUUAGGUACCAGGACGCGCAGAGGUUCGUGUGGCCAUUCGAAGAUCCAUUGCUUGCCCGCGCCGAACGGCCCUGAUGUAGGCCCGUUGGAAGCUCGGAACCACAGCUCGCUCCAAAAGCCCCGACUCCAUCUAUUCAACGGUCAGAGCCUGAGCUCUGUAAUAAAAAGGAGCAUACCCUGUAUAGACCUCGCGCUAGACAAGUUUUCCCCCCGCCUCACGCCGCACGCGGAACAUGGUCGUUUUUUUUUCUUAGAGCUAGAUCUGGGUUGUCGUUUUGCUUGUCGACGUCGAGCGACCGUAGUUACCCGUUCUAUCACUUAUACAUUAACUCACGGAAGCAGCCGUGCUAGGAUUAAUCCUGGUGUGAGGACGGUUUUAUGGAUACCGCACCUCUCGGUUGAGCUAUUCCCGCGUCUUAUGCGGGAGAAGCGCAGACCCCGGCGCUCGCAACAUCGCGCUCUCCACGCUAUGUUAGCGCCGUUUACAACUACGUGUUCUACGCUCCCGUUCCUAAGCAGCGCCGGAGCGCAAGGCCUCGGCCCCCGGUGCCCGGGUAAUAAGGUGGACUUCGCCCCAACUUUCAACCGCCGAGUAGACGAAAGAAAUGUUCGACGCACUAACGGGGAUUGUGUCGUCAGCGUAGAUGGAACGGACUGGAUUUUAUGUGUCCGCGGCGCUGUUCGUGGGGAUGUCAGGGCCGCGCUGGUAGAAUUGUCACACCUUAGCUCCCUACGAAGGUCGGACCUGAGCAUUUUAUACCUGCUUCCCGACCUGCUAGGACCAAUAAAUCCACUGUAUACCCUCUCGAUUCUGAUGUACGUAGGAUGCAAGCGUCUUCUGAUAUAUGGCGUUCGGAAGGAUAACCCCCACCAACCCGCUGUUCGUUCUCGUCCACGCGGACGACUGGCAUUCCGCCGGAGACGAAACCGUGAACUCUCUACCAUCGACUAUUAUCAGCGCUGGAAACAGCAAGCAUGGAUUCGGCCGUCGAAUCUGGGCGCCUGGCCCAUGUAUAGGAUCACGACCAGUCUCGGCCAACACGAAGGCGUCAGUCAUGUGUUAAGACCAGAAAGGGGUCGUCAGCGCUGGGCGCGUGCGAUGGCCAUUUUUGGUGUACUACUCAGUCAAGUCAACUAUCGGAACUUUGUCCCAGUUCGCAUCACUUUGCGCAAGAUCGACCCCGACCGGUCGGUGCCACCCGAAGACCGAGCAUACACGAUGCUCCAAAGAAGGAUUUUCAAGAUAUAUGAUAACAUAAAUAACACUGCACCACUGUCGCCGAGCGUAACUAAUGUUCGGCCGCUGAUCCGAGGGAUAACGGCGUUGAAGAAUCGUGGUCUUUACGUGUUAACGAUGCCUAAAAAUCUCUGCAUGACCACCGGGGAUCUGUGUAAAUCGCGGCAGCACUUCGGGGUUUCAAUAUUAACGGACGGCGGAACCCCCCCUACGGCUUGUAGAGUUAUCCACGACUCUCGAGGCCGGCAAUUGGUGUACAUUAAGCCUCUGAUCAUGGCCAGUCGACACCACGCCGUGAGCGAACAUCUUAUGGGGUUAAUUCAAUUUAGUGGUACCUACAGCCGCCCUUUAUAUCUAUGUCAUCAGACUAUUAUCUGUUUGCAGACCCUGACUGUGCGAAUCGCUGAUUCGCCUCCGUACUGGUGGUAUACCGCAGAAACCCACCUCCGGCAGUGGAGGUUGUUGCGCCGAAUUACCCCGUGUGAUCUUCAGGACCCAUUCGAACCAUUCCCCAGUCACGCGACCCCGGAGCCUAAAUUCCCAUUGAGAAAAUGUCUCGCUAUGUCACGAAUCCGUUACCCGUCUUUCACAUACACGUUGCACAUACGCGCCACCAAUUUACUCACGCCGGCUCUCAUGCCGGCAAAUCAGUACUGUGCGCCAUUAGACUGGCAACAAGCUGAGUUUGUGAACUCACAUACAUACCUGAUAAGGUCGCGUAGUGACACUGAGUAUGGCCGCAGAGAGACCGCAGAUACCUCCCUAGGGGUAGGCCUGCUGCCCAGCCGGCCGUGUUAUAGUAAGUCGAAUCAACCGCAGCCUCUACAGGAGACACGAACAGACGCAUUUGCCCCUAAUGUCUGGAGCGAAGCUGCUGCUUCUUGUGGCUUUAUCCGGUCAGCCUAUGUAGCACUGACUACUUGGCAGUAUAUCGGCAUGUGUGACCGCAAAUGCCAUUUAUUGGAGUUGCUGAAGUGGGCGAGUAAGAUUAUUUUGCCGUCAGUCCGUAUGCUACUAAAUAUAUGUAUGAUGGAAAUAGAUGUUCGUGCAUAUCAACAAAGUGUGGCCCCUUGGAUUCUGCACAUUAGGAAGCUACCGACUGGUGGACAAAAAAAUUCCAGCAAAACUACCAAAGAGACAGGGGGUUAUAACCGAUGGAGGGGUGGCGACGCUCGUGGUGGGUCCAAGAGUAAGUCGCUAAACUUUAUGACACCCAGGCCUAGCGCGGCGGCGGCUGUAUAUGGGAACAUAACCAAGGUCGUGCACUGCCACAUGUAUAGCGCGCCGCUCGCUCUACUUGAAGACGAUUGCCCGCCUCUGCCUGUAGCAAAUUACAAUUUUUAUAAGCCAUCAUCCCGGAUAACAGGGAUAAUUCUAUCGCACUUAAAACAAAGGAUUGUAGUACUAACGACCGCGCCCAUGGAAGAGGCGCGACCCACCACCACCUCUGGCUGUUCUAGGCGCGCUUCUUAUCGGUGUAUGUGUGUAAGAUCUCAGACGGUUCGCUCCAACAGUCGCUGGGUAUACCACGUCCGGAGAACUAACAGUUGUUGGGGUAUUAUAGGACUCGGUGUGCAACGGGCAGCGAUUUAUCGUUCGAAAUAUUGUGUAGAGAUCUCUAGGAACCCCCCAUUAGACUCGGGCUCAAUAUCGUUCCGGUAUGCGCUUUCUUUUAAUGCCUGUCCUAGAGGUGCGGCUAUAGGAUGGGGCUGGGGAUCGACGUUAACUGGGAUAGCUACCGAUCUUUGGCGAAUGAUUCCUCUCACGGGACAAGUCUUCCGUCUUAGGAGUGGUGAGCAGGACAGGAUACUACUGCACCCAAAGCAAUACGUUGGUUCGCGUACACAAUUGAGAUCGCAGCUUGGCUUCGGUCACAAGAAGGUGCCCAAGACGUGUAUGUGCUUCACGGGCGGUACAUCGAACAAUCUGGAUGUUACUGCCCGGGUAUGUAUUUUGAUGAAUCCACUCAGUGAAGCUUCGGCGCACUGCAAGUGCAACUGGGUCACGCGGGAGCUGUUCUUCCUGACAAGAGGUUCGAAAAGUAAAGUGCGAAAAGGGUUCGUAUGCAUAAACAAAUUGUUCAGCACAUUUACCCUUAGGGCUUGGUGUUCUAACAACCAAAAGGUAGAGCAUCCUUCUAAUGAAUCUCUCAUUGAUCCCCGUUAUUGGCAGCGUGGGUGCUACUCCACUUUCAGCCUCAUUGGGUCGUCGCAUCGUUUGUAUUCUGGUGGAUCGCUCCGCGCCGCCCCCAAUGGAGAUACAGCGCGUAAGACAGUGAUUUACUCGGAGAACCGUGUACCCGAGUUCCUUAGCCCUUCAAUAAAAUCACUUAUGGCAUGCCUUUCGCCCUCCGCCUGUAGGGCGCUAUCUGACUCGAAUGAGCAUUGGGGGUUACCUAUAUACUCUCUCGCUUCGAUCUACUUCCAACCAACGGGUCCACUCAGGGGUCAACGAAUGGGUUCCCUGCACGCUGUUAUGGGCAACUCUCGGGCCAUCGGAGGGGAACGAUGCCCGAGAGGGUUUGCCCCUAUGAAUUUGGGGAACAAGGGACGUGCCAAUAGCCUGACCGCGUGUUUUCGACGUAUGGGAAACCGCCUAACCACGCGCCAACCUACCAAGUGUCUCGGGGUGGGUCGAUCAUGCGGAAACUGCCAGUUAUGCUACAACUGCUUCAAUGACCGGGUCUCAGCAGACCGCUAUUACAACGGCAGUGAGUUGCUUAACCUGGUCUUGUUCUACAGGAAUAUAGGCCCGGAUACUGGUGAAAUUGCAAGUUAG"
s' = "AUGGCC"
searchTable str [] = error "Mismatch"
searchTable str ((w,k):table)
| str == w && k /= "Stop" = k
| str == w && k == "Stop" = ""
| otherwise = searchTable str table
proteinStr [] table = []
proteinStr (x:y:z:xs) table
| otherwise = searchTable ([x] ++ [y] ++ [z]) table ++ proteinStr xs table
main = do
input_table <- readFile "RNA_table.txt"
let
table = makeTuple $ words input_table
putStrLn $ proteinStr s table