diff --git a/config.json b/config.json index 23c0cf9..da432aa 100644 --- a/config.json +++ b/config.json @@ -91,6 +91,14 @@ "practices": [], "prerequisites": [], "difficulty": 2 + }, + { + "slug": "rna-transcription", + "name": "RNA Transcription", + "uuid": "c76f276e-dd42-4bd9-ac7f-81ecc1a89a09", + "practices": [], + "prerequisites": [], + "difficulty": 2 } ] }, diff --git a/exercises/practice/rna-transcription/.docs/instructions.md b/exercises/practice/rna-transcription/.docs/instructions.md new file mode 100644 index 0000000..36da381 --- /dev/null +++ b/exercises/practice/rna-transcription/.docs/instructions.md @@ -0,0 +1,20 @@ +# Instructions + +Your task is determine the RNA complement of a given DNA sequence. + +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` + +~~~~exercism/note +If you want to look at how the inputs and outputs are structured, take a look at the examples in the test suite. +~~~~ diff --git a/exercises/practice/rna-transcription/.docs/introduction.md b/exercises/practice/rna-transcription/.docs/introduction.md new file mode 100644 index 0000000..6b3f44b --- /dev/null +++ b/exercises/practice/rna-transcription/.docs/introduction.md @@ -0,0 +1,16 @@ +# Introduction + +You work for a bioengineering company that specializes in developing therapeutic solutions. + +Your team has just been given a new project to develop a targeted therapy for a rare type of cancer. + +~~~~exercism/note +It's all very complicated, but the basic idea is that sometimes people's bodies produce too much of a given protein. +That can cause all sorts of havoc. + +But if you can create a very specific molecule (called a micro-RNA), it can prevent the protein from being produced. + +This technique is called [RNA Interference][rnai]. + +[rnai]: https://admin.acceleratingscience.com/ask-a-scientist/what-is-rnai/ +~~~~ diff --git a/exercises/practice/rna-transcription/.meta/config.json b/exercises/practice/rna-transcription/.meta/config.json new file mode 100644 index 0000000..495c14b --- /dev/null +++ b/exercises/practice/rna-transcription/.meta/config.json @@ -0,0 +1,23 @@ +{ + "authors": [ + "erikschierboom", + "erikschierboom" + ], + "files": { + "solution": [ + "src/rna-transcription.art" + ], + "test": [ + "tests/test-rna-transcription.art" + ], + "example": [ + ".meta/src/example.art" + ], + "invalidator": [ + "tester.art" + ] + }, + "blurb": "Given a DNA strand, return its RNA Complement Transcription.", + "source": "Hyperphysics", + "source_url": "https://web.archive.org/web/20220408112140/http://hyperphysics.phy-astr.gsu.edu/hbase/Organic/transcription.html" +} diff --git a/exercises/practice/rna-transcription/.meta/src/example.art b/exercises/practice/rna-transcription/.meta/src/example.art new file mode 100644 index 0000000..e13f926 --- /dev/null +++ b/exercises/practice/rna-transcription/.meta/src/example.art @@ -0,0 +1 @@ +rna: $ => [translate & #[G: "C" C: "G" T: "A" A: "U"]] diff --git a/exercises/practice/rna-transcription/.meta/tests.toml b/exercises/practice/rna-transcription/.meta/tests.toml new file mode 100644 index 0000000..6800514 --- /dev/null +++ b/exercises/practice/rna-transcription/.meta/tests.toml @@ -0,0 +1,28 @@ +# This is an auto-generated file. +# +# Regenerating this file via `configlet sync` will: +# - Recreate every `description` key/value pair +# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications +# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion) +# - Preserve any other key/value pair +# +# As user-added comments (using the # character) will be removed when this file +# is regenerated, comments can be added via a `comment` key. + +[b4631f82-c98c-4a2f-90b3-c5c2b6c6f661] +description = "Empty RNA sequence" + +[a9558a3c-318c-4240-9256-5d5ed47005a6] +description = "RNA complement of cytosine is guanine" + +[6eedbb5c-12cb-4c8b-9f51-f8320b4dc2e7] +description = "RNA complement of guanine is cytosine" + +[870bd3ec-8487-471d-8d9a-a25046488d3e] +description = "RNA complement of thymine is adenine" + +[aade8964-02e1-4073-872f-42d3ffd74c5f] +description = "RNA complement of adenine is uracil" + +[79ed2757-f018-4f47-a1d7-34a559392dbf] +description = "RNA complement" diff --git a/exercises/practice/rna-transcription/src/rna-transcription.art b/exercises/practice/rna-transcription/src/rna-transcription.art new file mode 100644 index 0000000..ba1510f --- /dev/null +++ b/exercises/practice/rna-transcription/src/rna-transcription.art @@ -0,0 +1,3 @@ +rna: function [dnaStrand][ + panic "Please implement the rna function" +] diff --git a/exercises/practice/rna-transcription/tester.art b/exercises/practice/rna-transcription/tester.art new file mode 100644 index 0000000..80f4a8f --- /dev/null +++ b/exercises/practice/rna-transcription/tester.art @@ -0,0 +1,3 @@ +import {unitt}! + +runTests.failFast findTests "tests" diff --git a/exercises/practice/rna-transcription/tests/test-rna-transcription.art b/exercises/practice/rna-transcription/tests/test-rna-transcription.art new file mode 100644 index 0000000..45957c4 --- /dev/null +++ b/exercises/practice/rna-transcription/tests/test-rna-transcription.art @@ -0,0 +1,34 @@ +import {unitt}! +import {src/rna-transcription}! + +suite "RNA Transcription" [ + test "Empty RNA sequence" [ + result: rna "" + assert -> "" = result + ] + + test.skip "RNA complement of cytosine is guanine" [ + result: rna "C" + assert -> "G" = result + ] + + test.skip "RNA complement of guanine is cytosine" [ + result: rna "G" + assert -> "C" = result + ] + + test.skip "RNA complement of thymine is adenine" [ + result: rna "T" + assert -> "A" = result + ] + + test.skip "RNA complement of adenine is uracil" [ + result: rna "A" + assert -> "U" = result + ] + + test.skip "RNA complement" [ + result: rna "ACGTGGTCTTAA" + assert -> "UGCACCAGAAUU" = result + ] +]