1
+
2
+ object MRNA extends App {
3
+ val example1 = " MA"
4
+ val example2 = " MQAVNGKGFSRPWSIWYPKQLTYGLNVQAMCWGYNAITGHPQHDEKFCVKVTTVYVNTSRKQSYRMWSMSQCQFAPEFHLGGEKYEHGYFPRDCWFAKKKQMLSNNIEVGRGKHSQRWKGFGETIVTVKFTTFHWCREDFEYPFAHDDMRHNTMVQHIYRHTYYPNDRMQWLTFFCFLHEYMWDRQGFNTHDCCDKPDMINNDAHQYAPIQLTNWWGKYTHGLIPHTLRMSTFTHFNTMLRQKRCVVVDHMWQVNSPCGAHCYTIMDVWFMWKDAHQPVYYRLGWLEAVDWRSHMIARMKVWSVCYFTWGWPHLYAGCQRYDTALDMFGAHTMPRGGGCHIKEYQLFTAHQVKTSIGRCLNWGHHGADTGAYLCLADNVESSFIFAFIYAVNMGDRQKFLCELEHMIMIAQCTDTRGYMKRDVVHSKHFNLPIVWQSFKVRTWNGLYPERAYHIINSDSPNSPVHFCWGSWATEGVYLVCKQLMAWTALAQLPQRRCGGRLEQVITDRMNKYILTLKCYFYPCEVTLIKMNFMTYFWCDPRHPRFWDAPPRAIRDHVHEWQSFLMYNTYRVPRFDYWDSNRHWICYAWLYYNQQEPTFEQDYLLTEAMSCCPHIDEQVYFTDAWMIYAENMNGEHDIVWNSCVDVDMMRSGQNCPSYMMHFFLYTNVAYASFYMDRYREDTCMLMLSKLWAPGFATFVWPLFCACVKDGCGACDTINREHMKRKNIAWQHTFPEKLDRFEIFEDYWHPCKVMTYWVAMVFAKSNSQGYRGVHSDFIGNSVNWPFMHSPCQTGHVMPEVCAGNQMMHPNLQQVKNYPWRGRFGKTLMSKMMHVRTDELGQVCTMTYNEIEHMLDILSIYPIMVFTWYDGLNWSRGVEYWANAQQFTQLWLSFEWYSECTWIIQCNVRHDRAINIHGQNMKECKRESDFYRLRAGLYQWSQGKEPKYVTGTCKCVCACMGLMEQFCRHMNPSDNSTPQVNENAMNVASDSCKLMHIAHIFFA"
5
+ val example3 = " MISLGGQRSSSKWNPSNPYYEHFVSDINNALVPEIDWDGGMQAIVFGDIGAILLGELKYMKPFSCCKHKQTKRHTESIWVVDGEEHHYKMFLPEPFNVKEQEEPQWHHKTAAHIYNCLPMAEGMPMLDQWYMFIAAIANTHCWAPRRGTPIHQGELNKEYQDLGMINEHMYICKLCTAIYEGWWTFCTREDNLEELHMTYPKHSFRHRFYFCSAEPTINGIDPVPDRYQWAKFIPYRFVDDSHNNCKHIRNKTSNCCHEWFRAVTWPFMDNTYHRMAHLWGLIYFSNHCANMMIPARMGSPKCTFVKHTQQGGNDSDVPLPVVRNLVWNFYIEDVTKKDRLDGIWPCHMPDDDNCTNFGAMHLHCEGFAEALKVCDSDGTYSAITLFHAWSAKKDDIKGPSDPSTRPRWYMLGQGTFRAMKVTDPSIGQRINNWDPGHVQGHMKAEMHNFWIGSGWDTERMRQHRKEGDMFDDAGVALNGWIWNGYPAGAFRLNMMWQCDGTDAKTQTVHCTWDDPRLCMIKAANSMLRKMWRSFKSPPCHMKDMLQDTLGFICNCYINAVVKHKIAPGKIAWETPQFQLWVTKQMLIFICPVFFIIWIRTNSYCLCIEWYIIPAGVTQFDLSIHVKLKYQQEIFVYLPAGQRKCWLANDQFELNYLSSLRQDQIDSWRWTVHMHGGDHMSPTRDDEARNVLSSDGEWAFYFDDAGSVQMCVEENNQDWVCNKQGGFMRRLTNDVVRKCFKNAHIPCTFEEAHWMEYYVKGMRMLQSCKCGWWVVAGFDYSTCENPGKCSPIINNSSLKFLNPIVDPMWFMWCFMHEKGWWMITLRKTYNNRPFMKKEYVAADECCWLSTTQPVPCDLQDCPFYSDRIYWIHGTSGMCWISPYCQDSPTDCFAYCHIGTREQSIQFGSSQHCFFYNFKHDLKYFSFKASGYFAVVESWLACMDQDWHWYVPCLQPMGEDCLWVTYHCNTHEAEMFWSEITMPLEWLGMAGWIIEASYWIH"
6
+
7
+ val proteinString = example3
8
+ println(countPossibleRNASequences(proteinString))
9
+
10
+ def countPossibleRNASequences (protein : String ) = {
11
+ val actual = protein + " "
12
+ actual.map(proteinToMRna).foldLeft(1L )((z, x) => (z * x.length) % 1000000 )
13
+
14
+ }
15
+
16
+ def proteinToMRna (protein : Char ) : List [String ] = {
17
+ protein match {
18
+ case 'A' => List (" GCU" , " GCA" , " GCC" , " GCG" )
19
+ case 'C' => List (" UGU" , " UGC" )
20
+ case 'D' => List (" GAU" , " GAC" )
21
+ case 'E' => List (" GAA" , " GAG" )
22
+ case 'F' => List (" UUU" , " UUC" )
23
+ case 'G' => List (" GGU" , " GGC" , " GGA" , " GGG" )
24
+ case 'H' => List (" CAU" , " CAC" )
25
+ case 'I' => List (" AUU" , " AUC" , " AUA" )
26
+ case 'K' => List (" AAA" , " AAG" )
27
+ case 'L' => List (" CUU" , " CUC" , " UUA" , " UUG" , " CUG" , " CUA" )
28
+ case 'M' => List (" AUG" )
29
+ case 'N' => List (" AAC" , " AAU" )
30
+ case 'P' => List (" CCU" , " CCC" , " CCA" , " CCG" )
31
+ case 'Q' => List (" CAA" , " CAG" )
32
+ case 'R' => List (" CGU" , " CGA" , " CGC" , " AGA" , " CGG" , " AGG" )
33
+ case 'S' => List (" AGU" , " AGC" , " UCU" , " UCC" , " UCG" , " UCA" )
34
+ case 'T' => List (" ACU" , " ACC" , " ACA" , " ACG" )
35
+ case 'V' => List (" GUU" , " GUC" , " GUA" , " GUG" )
36
+ case 'W' => List (" UGG" )
37
+ case 'Y' => List (" UAU" , " UAC" )
38
+ case ' ' => List (" UAA" , " UAG" , " UGA" )
39
+ case _ => throw new RuntimeException (" Bad protein" )
40
+ }
41
+ }
42
+ }
0 commit comments