Skip to content

Commit

Permalink
Add rna-transcription (#166)
Browse files Browse the repository at this point in the history
  • Loading branch information
BNAndras authored May 16, 2024
1 parent 0ea7066 commit 55770e8
Show file tree
Hide file tree
Showing 9 changed files with 411 additions and 0 deletions.
8 changes: 8 additions & 0 deletions config.json
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,14 @@
],
"difficulty": 2
},
{
"slug": "rna-transcription",
"name": "RNA Transcription",
"uuid": "acc3154e-4f1b-4315-8c81-665e76dff417",
"practices": [],
"prerequisites": [],
"difficulty": 2
},
{
"slug": "scrabble-score",
"name": "Scrabble Score",
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/
~~~~
19 changes: 19 additions & 0 deletions exercises/practice/rna-transcription/.meta/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"authors": [
"BNAndras"
],
"files": {
"solution": [
"rna-transcription.red"
],
"test": [
"rna-transcription-test.red"
],
"example": [
".meta/example.red"
]
},
"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"
}
20 changes: 20 additions & 0 deletions exercises/practice/rna-transcription/.meta/example.red
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Red [
description: {"RNA Transcription" exercise solution for exercism platform}
author: "BNAndras"
]

to-rna: function [
dna
] [
rna: copy ""
foreach nucleotide dna [
switch nucleotide [
#"G" [append rna "C"]
#"C" [append rna "G"]
#"T" [append rna "A"]
#"A" [append rna "U"]
]
]

rna
]
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"
72 changes: 72 additions & 0 deletions exercises/practice/rna-transcription/rna-transcription-test.red
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
Red [
description: {Tests for "RNA Transcription" Exercism exercise}
author: "loziniak"
]

#include %testlib.red

test-init/limit %rna-transcription.red 1
; test-init/limit %.meta/example.red 1 ; test example solution

canonical-cases: [#[
description: "Empty RNA sequence"
input: #[
dna: ""
]
expected: ""
function: "to-rna"
uuid: "b4631f82-c98c-4a2f-90b3-c5c2b6c6f661"
] #[
description: "RNA complement of cytosine is guanine"
input: #[
dna: "C"
]
expected: "G"
function: "to-rna"
uuid: "a9558a3c-318c-4240-9256-5d5ed47005a6"
] #[
description: "RNA complement of guanine is cytosine"
input: #[
dna: "G"
]
expected: "C"
function: "to-rna"
uuid: "6eedbb5c-12cb-4c8b-9f51-f8320b4dc2e7"
] #[
description: "RNA complement of thymine is adenine"
input: #[
dna: "T"
]
expected: "A"
function: "to-rna"
uuid: "870bd3ec-8487-471d-8d9a-a25046488d3e"
] #[
description: "RNA complement of adenine is uracil"
input: #[
dna: "A"
]
expected: "U"
function: "to-rna"
uuid: "aade8964-02e1-4073-872f-42d3ffd74c5f"
] #[
description: "RNA complement"
input: #[
dna: "ACGTGGTCTTAA"
]
expected: "UGCACCAGAAUU"
function: "to-rna"
uuid: "79ed2757-f018-4f47-a1d7-34a559392dbf"
]]


foreach c-case canonical-cases [
case-code: reduce [
'expect c-case/expected compose [
(to word! c-case/function) (values-of c-case/input)
]
]

test c-case/description case-code
]

test-results/print
11 changes: 11 additions & 0 deletions exercises/practice/rna-transcription/rna-transcription.red
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Red [
description: {"RNA Transcription" exercise solution for exercism platform}
author: "" ; you can write your name here, in quotes
]

to-rna: function [
dna
] [
cause-error 'user 'message "You need to implement to-rna function."
]

Loading

0 comments on commit 55770e8

Please sign in to comment.