Skip to content

Commit

Permalink
Add rna-transcription exercise
Browse files Browse the repository at this point in the history
  • Loading branch information
ErikSchierboom committed May 25, 2024
1 parent 7f2a132 commit b53abb2
Show file tree
Hide file tree
Showing 9 changed files with 136 additions and 0 deletions.
8 changes: 8 additions & 0 deletions config.json
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,14 @@
"practices": [],
"prerequisites": [],
"difficulty": 2
},
{
"slug": "rna-transcription",
"name": "RNA Transcription",
"uuid": "c76f276e-dd42-4bd9-ac7f-81ecc1a89a09",
"practices": [],
"prerequisites": [],
"difficulty": 2
}
]
},
Expand Down
20 changes: 20 additions & 0 deletions exercises/practice/rna-transcription/.docs/instructions.md
Original file line number Diff line number Diff line change
@@ -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.
~~~~
16 changes: 16 additions & 0 deletions exercises/practice/rna-transcription/.docs/introduction.md
Original file line number Diff line number Diff line change
@@ -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/
~~~~
23 changes: 23 additions & 0 deletions exercises/practice/rna-transcription/.meta/config.json
Original file line number Diff line number Diff line change
@@ -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"
}
1 change: 1 addition & 0 deletions exercises/practice/rna-transcription/.meta/src/example.art
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
rna: $ => [translate & #[G: "C" C: "G" T: "A" A: "U"]]
28 changes: 28 additions & 0 deletions exercises/practice/rna-transcription/.meta/tests.toml
Original file line number Diff line number Diff line change
@@ -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"
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
rna: function [dnaStrand][
panic "Please implement the rna function"
]
3 changes: 3 additions & 0 deletions exercises/practice/rna-transcription/tester.art
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import {unitt}!

runTests.failFast findTests "tests"
Original file line number Diff line number Diff line change
@@ -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
]
]

0 comments on commit b53abb2

Please sign in to comment.