Add elisp/rna-transcription
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
# Rna Transcription
|
||||
|
||||
Given a DNA strand, return its RNA complement (per RNA transcription).
|
||||
|
||||
Both DNA and RNA strands are a sequence of nucleotides.
|
||||
|
||||
The four nucleotides found in DNA are adenine (**A**), cytosine (**C**),
|
||||
guanine (**G**) and thymine (**T**).
|
||||
|
||||
The four nucleotides found in RNA are adenine (**A**), cytosine (**C**),
|
||||
guanine (**G**) and uracil (**U**).
|
||||
|
||||
Given a DNA strand, its transcribed RNA strand is formed by replacing
|
||||
each nucleotide with its complement:
|
||||
|
||||
* `G` -> `C`
|
||||
* `C` -> `G`
|
||||
* `T` -> `A`
|
||||
* `A` -> `U`
|
||||
## Source
|
||||
|
||||
Rosalind [http://rosalind.info/problems/rna](http://rosalind.info/problems/rna)
|
||||
|
||||
## Submitting Incomplete Solutions
|
||||
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
||||
@@ -0,0 +1,32 @@
|
||||
;;; rna-transcription-test.el --- Tests for RNA Transcription (exercism)
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'cl)
|
||||
|
||||
(load-file "rna-transcription.el")
|
||||
|
||||
(ert-deftest transcribes-cytosine-to-guanine ()
|
||||
(should (string= "G" (to-rna "C"))))
|
||||
|
||||
(ert-deftest transcribes-guanine-to-cytosine ()
|
||||
(should (string= "C" (to-rna "G"))))
|
||||
|
||||
(ert-deftest transcribes-adenine-to-uracil ()
|
||||
(should (string= "U" (to-rna "A"))))
|
||||
|
||||
(ert-deftest transcribes-thymine-to-adenine ()
|
||||
(should (string= "A" (to-rna "T"))))
|
||||
|
||||
(ert-deftest it-transcribes-all-nucleotides ()
|
||||
(should (string= "UGCACCAGAAUU"
|
||||
(to-rna "ACGTGGTCTTAA"))))
|
||||
|
||||
(ert-deftest it-validates-dna-strands ()
|
||||
(should-error (to-rna "XCGFGGTDTTAA")))
|
||||
|
||||
(provide 'rna-transcription-test)
|
||||
;;; rna-transcription-test.el ends here
|
||||
@@ -0,0 +1,23 @@
|
||||
;;; rna-transcription.el -- RNA Transcription (exercism)
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(provide 'rna-transcription)
|
||||
|
||||
(defun transcribe (nucleotide)
|
||||
"Return the matching RNA pair for DNA NUCLEOTIDE."
|
||||
(cond ((char-equal nucleotide ?C) "G")
|
||||
((char-equal nucleotide ?G) "C")
|
||||
((char-equal nucleotide ?A) "U")
|
||||
((char-equal nucleotide ?T) "A")
|
||||
((error "Unrecognized nucleotide"))))
|
||||
|
||||
(defun to-rna (dna)
|
||||
"Transcribe a string representing DNA nucleotides.
|
||||
Return a string representing RNA nucleotides."
|
||||
(cl-loop for nucleotide being the elements of dna
|
||||
concat (transcribe nucleotide)))
|
||||
|
||||
;;; rna-transcription.el ends here
|
||||
Reference in New Issue
Block a user