lunchtime elixir
This commit is contained in:
parent
73be23d878
commit
14005e4a12
|
@ -0,0 +1,45 @@
|
||||||
|
# Bracket Push
|
||||||
|
|
||||||
|
Given a string containing brackets `[]`, braces `{}` and parentheses `()`,
|
||||||
|
verify that all the pairs are matched and nested correctly.
|
||||||
|
|
||||||
|
## Running tests
|
||||||
|
|
||||||
|
Execute the tests with:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ elixir bracket_push_test.exs
|
||||||
|
```
|
||||||
|
|
||||||
|
### Pending tests
|
||||||
|
|
||||||
|
In the test suites, all but the first test have been skipped.
|
||||||
|
|
||||||
|
Once you get a test passing, you can unskip the next one by
|
||||||
|
commenting out the relevant `@tag :pending` with a `#` symbol.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
```elixir
|
||||||
|
# @tag :pending
|
||||||
|
test "shouting" do
|
||||||
|
assert Bob.hey("WATCH OUT!") == "Whoa, chill out!"
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Or, you can enable all the tests by commenting out the
|
||||||
|
`ExUnit.configure` line in the test suite.
|
||||||
|
|
||||||
|
```elixir
|
||||||
|
# ExUnit.configure exclude: :pending, trace: true
|
||||||
|
```
|
||||||
|
|
||||||
|
For more detailed information about the Elixir track, please
|
||||||
|
see the [help page](http://exercism.io/languages/elixir).
|
||||||
|
|
||||||
|
## Source
|
||||||
|
|
||||||
|
Ginna Baker
|
||||||
|
|
||||||
|
## Submitting Incomplete Solutions
|
||||||
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@ -0,0 +1,22 @@
|
||||||
|
defmodule BracketPush do
|
||||||
|
@doc """
|
||||||
|
Checks that all the brackets and braces in the string are matched correctly, and nested correctly
|
||||||
|
"""
|
||||||
|
@spec check_brackets(String.t()) :: boolean
|
||||||
|
def check_brackets(str) do
|
||||||
|
check(String.graphemes(str), [])
|
||||||
|
end
|
||||||
|
|
||||||
|
String.graphemes("{}()[]<>")
|
||||||
|
|> Enum.chunk_every(2)
|
||||||
|
|> Enum.each(fn pair ->
|
||||||
|
[o, c] = pair
|
||||||
|
defp check([unquote(o) | tail], stack), do: check(tail, [unquote(o) | stack])
|
||||||
|
defp check([unquote(c) | tail], [unquote(o) | stack]), do: check(tail, stack)
|
||||||
|
defp check([unquote(c) | _], _), do: false
|
||||||
|
end)
|
||||||
|
|
||||||
|
defp check([_head | tail], stack), do: check(tail, stack)
|
||||||
|
defp check([], []), do: true
|
||||||
|
defp check([], _), do: false
|
||||||
|
end
|
|
@ -0,0 +1,82 @@
|
||||||
|
if !System.get_env("EXERCISM_TEST_EXAMPLES") do
|
||||||
|
Code.load_file("bracket_push.exs", __DIR__)
|
||||||
|
end
|
||||||
|
|
||||||
|
ExUnit.start()
|
||||||
|
ExUnit.configure(trace: true)
|
||||||
|
|
||||||
|
defmodule BracketPushTest do
|
||||||
|
use ExUnit.Case
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "paired square brackets" do
|
||||||
|
assert BracketPush.check_brackets("[]")
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "empty string" do
|
||||||
|
assert BracketPush.check_brackets("")
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "unpaired brackets" do
|
||||||
|
refute BracketPush.check_brackets("[[")
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "wrong ordered brackets" do
|
||||||
|
refute BracketPush.check_brackets("}{")
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "wrong closing bracket" do
|
||||||
|
refute BracketPush.check_brackets("{]")
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "paired with whitespace" do
|
||||||
|
assert BracketPush.check_brackets("{ }")
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "simple nested brackets" do
|
||||||
|
assert BracketPush.check_brackets("{[]}")
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "several paired brackets" do
|
||||||
|
assert BracketPush.check_brackets("{}[]")
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "paired and nested brackets" do
|
||||||
|
assert BracketPush.check_brackets("([{}({}[])])")
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "unopened closing brackets" do
|
||||||
|
refute BracketPush.check_brackets("{[)][]}")
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "unpaired and nested brackets" do
|
||||||
|
refute BracketPush.check_brackets("([{])")
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "paired and wrong nested brackets" do
|
||||||
|
refute BracketPush.check_brackets("[({]})")
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "math expression" do
|
||||||
|
assert BracketPush.check_brackets("(((185 + 223.85) * 15) - 543)/2")
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "complex latex expression" do
|
||||||
|
assert BracketPush.check_brackets(
|
||||||
|
"\\left(\\begin{array}{cc} \\frac{1}{3} & x\\\\ \\mathrm{e}^{x} &... x^2 \\end{array}\\right)"
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
|
@ -7,6 +7,10 @@ defmodule Matrix do
|
||||||
"""
|
"""
|
||||||
@spec from_string(input :: String.t()) :: %Matrix{}
|
@spec from_string(input :: String.t()) :: %Matrix{}
|
||||||
def from_string(input) do
|
def from_string(input) do
|
||||||
|
input
|
||||||
|
|> String.split("\n")
|
||||||
|
|> Enum.map(&String.split(&1, " "))
|
||||||
|
|> Enum.map(fn row -> Enum.map(row, &String.to_integer/1) end)
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
|
@ -15,33 +19,39 @@ defmodule Matrix do
|
||||||
"""
|
"""
|
||||||
@spec to_string(matrix :: %Matrix{}) :: String.t()
|
@spec to_string(matrix :: %Matrix{}) :: String.t()
|
||||||
def to_string(matrix) do
|
def to_string(matrix) do
|
||||||
|
Enum.join(Enum.map(matrix, &Enum.join(&1, " ")), "\n")
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
Given a `matrix`, return its rows as a list of lists of integers.
|
Given a `matrix`, return its rows as a list of lists of integers.
|
||||||
"""
|
"""
|
||||||
@spec rows(matrix :: %Matrix{}) :: list(list(integer))
|
@spec rows(matrix :: %Matrix{}) :: list(list(integer))
|
||||||
def rows(matrix) do
|
def rows(matrix), do: matrix
|
||||||
end
|
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
Given a `matrix` and `index`, return the row at `index`.
|
Given a `matrix` and `index`, return the row at `index`.
|
||||||
"""
|
"""
|
||||||
@spec row(matrix :: %Matrix{}, index :: integer) :: list(integer)
|
@spec row(matrix :: %Matrix{}, index :: integer) :: list(integer)
|
||||||
def row(matrix, index) do
|
def row([head | _tail], 0), do: head
|
||||||
end
|
def row([_head | tail], index), do: row(tail, index - 1)
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
Given a `matrix`, return its columns as a list of lists of integers.
|
Given a `matrix`, return its columns as a list of lists of integers.
|
||||||
"""
|
"""
|
||||||
@spec columns(matrix :: %Matrix{}) :: list(list(integer))
|
@spec columns(matrix :: %Matrix{}) :: list(list(integer))
|
||||||
def columns(matrix) do
|
def columns(matrix), do: rows(transpose(matrix))
|
||||||
end
|
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
Given a `matrix` and `index`, return the column at `index`.
|
Given a `matrix` and `index`, return the column at `index`.
|
||||||
"""
|
"""
|
||||||
@spec column(matrix :: %Matrix{}, index :: integer) :: list(integer)
|
@spec column(matrix :: %Matrix{}, index :: integer) :: list(integer)
|
||||||
def column(matrix, index) do
|
def column(matrix, index), do: row(transpose(matrix), index)
|
||||||
|
|
||||||
|
@doc """
|
||||||
|
swap rows and columns of a matrix
|
||||||
|
inspired by: http://exercism.io/submissions/dc8f7aff89864956b59d6077477ce9ce
|
||||||
|
"""
|
||||||
|
defp transpose(matrix) do
|
||||||
|
Enum.map(List.zip(matrix), &Tuple.to_list/1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
# Phone Number
|
||||||
|
|
||||||
|
Clean up user-entered phone numbers so that they can be sent SMS messages.
|
||||||
|
|
||||||
|
The **North American Numbering Plan (NANP)** is a telephone numbering system used by many countries in North America like the United States, Canada or Bermuda. All NANP-countries share the same international country code: `1`.
|
||||||
|
|
||||||
|
NANP numbers are ten-digit numbers consisting of a three-digit Numbering Plan Area code, commonly known as *area code*, followed by a seven-digit local number. The first three digits of the local number represent the *exchange code*, followed by the unique four-digit number which is the *subscriber number*.
|
||||||
|
|
||||||
|
The format is usually represented as
|
||||||
|
|
||||||
|
```text
|
||||||
|
(NXX)-NXX-XXXX
|
||||||
|
```
|
||||||
|
|
||||||
|
where `N` is any digit from 2 through 9 and `X` is any digit from 0 through 9.
|
||||||
|
|
||||||
|
Your task is to clean up differently formatted telephone numbers by removing punctuation and the country code (1) if present.
|
||||||
|
|
||||||
|
For example, the inputs
|
||||||
|
- `+1 (613)-995-0253`
|
||||||
|
- `613-995-0253`
|
||||||
|
- `1 613 995 0253`
|
||||||
|
- `613.995.0253`
|
||||||
|
|
||||||
|
should all produce the output
|
||||||
|
|
||||||
|
`6139950253`
|
||||||
|
|
||||||
|
**Note:** As this exercise only deals with telephone numbers used in NANP-countries, only 1 is considered a valid country code.
|
||||||
|
|
||||||
|
## Running tests
|
||||||
|
|
||||||
|
Execute the tests with:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ elixir phone_number_test.exs
|
||||||
|
```
|
||||||
|
|
||||||
|
### Pending tests
|
||||||
|
|
||||||
|
In the test suites, all but the first test have been skipped.
|
||||||
|
|
||||||
|
Once you get a test passing, you can unskip the next one by
|
||||||
|
commenting out the relevant `@tag :pending` with a `#` symbol.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
```elixir
|
||||||
|
# @tag :pending
|
||||||
|
test "shouting" do
|
||||||
|
assert Bob.hey("WATCH OUT!") == "Whoa, chill out!"
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Or, you can enable all the tests by commenting out the
|
||||||
|
`ExUnit.configure` line in the test suite.
|
||||||
|
|
||||||
|
```elixir
|
||||||
|
# ExUnit.configure exclude: :pending, trace: true
|
||||||
|
```
|
||||||
|
|
||||||
|
For more detailed information about the Elixir track, please
|
||||||
|
see the [help page](http://exercism.io/languages/elixir).
|
||||||
|
|
||||||
|
## Source
|
||||||
|
|
||||||
|
Event Manager by JumpstartLab [http://tutorials.jumpstartlab.com/projects/eventmanager.html](http://tutorials.jumpstartlab.com/projects/eventmanager.html)
|
||||||
|
|
||||||
|
## Submitting Incomplete Solutions
|
||||||
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@ -0,0 +1,76 @@
|
||||||
|
defmodule Phone do
|
||||||
|
@doc """
|
||||||
|
Remove formatting from a phone number.
|
||||||
|
|
||||||
|
Returns "0000000000" if phone number is not valid
|
||||||
|
(10 digits or "1" followed by 10 digits)
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
iex> Phone.number("212-555-0100")
|
||||||
|
"2125550100"
|
||||||
|
|
||||||
|
iex> Phone.number("+1 (212) 555-0100")
|
||||||
|
"2125550100"
|
||||||
|
|
||||||
|
iex> Phone.number("+1 (212) 055-0100")
|
||||||
|
"0000000000"
|
||||||
|
|
||||||
|
iex> Phone.number("(212) 555-0100")
|
||||||
|
"2125550100"
|
||||||
|
|
||||||
|
iex> Phone.number("867.5309")
|
||||||
|
"0000000000"
|
||||||
|
"""
|
||||||
|
@spec number(String.t()) :: String.t()
|
||||||
|
def number(raw) do
|
||||||
|
end
|
||||||
|
|
||||||
|
@doc """
|
||||||
|
Extract the area code from a phone number
|
||||||
|
|
||||||
|
Returns the first three digits from a phone number,
|
||||||
|
ignoring long distance indicator
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
iex> Phone.area_code("212-555-0100")
|
||||||
|
"212"
|
||||||
|
|
||||||
|
iex> Phone.area_code("+1 (212) 555-0100")
|
||||||
|
"212"
|
||||||
|
|
||||||
|
iex> Phone.area_code("+1 (012) 555-0100")
|
||||||
|
"000"
|
||||||
|
|
||||||
|
iex> Phone.area_code("867.5309")
|
||||||
|
"000"
|
||||||
|
"""
|
||||||
|
@spec area_code(String.t()) :: String.t()
|
||||||
|
def area_code(raw) do
|
||||||
|
end
|
||||||
|
|
||||||
|
@doc """
|
||||||
|
Pretty print a phone number
|
||||||
|
|
||||||
|
Wraps the area code in parentheses and separates
|
||||||
|
exchange and subscriber number with a dash.
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
iex> Phone.pretty("212-555-0100")
|
||||||
|
"(212) 555-0100"
|
||||||
|
|
||||||
|
iex> Phone.pretty("212-155-0100")
|
||||||
|
"(000) 000-0000"
|
||||||
|
|
||||||
|
iex> Phone.pretty("+1 (303) 555-1212")
|
||||||
|
"(303) 555-1212"
|
||||||
|
|
||||||
|
iex> Phone.pretty("867.5309")
|
||||||
|
"(000) 000-0000"
|
||||||
|
"""
|
||||||
|
@spec pretty(String.t()) :: String.t()
|
||||||
|
def pretty(raw) do
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,109 @@
|
||||||
|
if !System.get_env("EXERCISM_TEST_EXAMPLES") do
|
||||||
|
Code.load_file("phone_number.exs", __DIR__)
|
||||||
|
end
|
||||||
|
|
||||||
|
ExUnit.start()
|
||||||
|
ExUnit.configure(exclude: :pending, trace: true)
|
||||||
|
|
||||||
|
defmodule PhoneTest do
|
||||||
|
use ExUnit.Case
|
||||||
|
|
||||||
|
test "cleans number" do
|
||||||
|
assert Phone.number("(212) 555-0100") == "2125550100"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "cleans number with dots" do
|
||||||
|
assert Phone.number("212.555.0100") == "2125550100"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "valid when 11 digits and first is 1" do
|
||||||
|
assert Phone.number("12125550100") == "2125550100"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "valid when 11 digits and some decorations" do
|
||||||
|
assert Phone.number("+1 (212) 555-0100") == "2125550100"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "invalid when country calling code is not 1" do
|
||||||
|
assert Phone.number("22125550100") == "0000000000"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "invalid when 9 digits" do
|
||||||
|
assert Phone.number("212555010") == "0000000000"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "invalid when proper number of digits but letters mixed in" do
|
||||||
|
assert Phone.number("2a1a2a5a5a5a0a1a0a0a") == "0000000000"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "invalid with correct number of characters but some are letters" do
|
||||||
|
assert Phone.number("2a1a2a5a5a") == "0000000000"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "invalid when area code begins with 1" do
|
||||||
|
assert Phone.number("1125550100") == "0000000000"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "invalid when area code begins with 0" do
|
||||||
|
assert Phone.number("0125550100") == "0000000000"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "invalid when exchange code begins with 1" do
|
||||||
|
assert Phone.number("2121550100") == "0000000000"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "invalid when exchange code begins with 0" do
|
||||||
|
assert Phone.number("2120550100") == "0000000000"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "area code" do
|
||||||
|
assert Phone.area_code("2125550100") == "212"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "area code with full US phone number" do
|
||||||
|
assert Phone.area_code("12125550100") == "212"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "invalid area code" do
|
||||||
|
assert Phone.area_code("(100) 555-1234") == "000"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "no area code" do
|
||||||
|
assert Phone.area_code("867.5309") == "000"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "pretty print" do
|
||||||
|
assert Phone.pretty("2125550100") == "(212) 555-0100"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "pretty print with full US phone number" do
|
||||||
|
assert Phone.pretty("+1 (303) 555-1212") == "(303) 555-1212"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "pretty print invalid US phone number" do
|
||||||
|
assert Phone.pretty("212-155-0100") == "(000) 000-0000"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "pretty print invalid, short US phone number" do
|
||||||
|
assert Phone.pretty("867.5309") == "(000) 000-0000"
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,60 @@
|
||||||
|
# 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`
|
||||||
|
|
||||||
|
## Running tests
|
||||||
|
|
||||||
|
Execute the tests with:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ elixir rna_transcription_test.exs
|
||||||
|
```
|
||||||
|
|
||||||
|
### Pending tests
|
||||||
|
|
||||||
|
In the test suites, all but the first test have been skipped.
|
||||||
|
|
||||||
|
Once you get a test passing, you can unskip the next one by
|
||||||
|
commenting out the relevant `@tag :pending` with a `#` symbol.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
```elixir
|
||||||
|
# @tag :pending
|
||||||
|
test "shouting" do
|
||||||
|
assert Bob.hey("WATCH OUT!") == "Whoa, chill out!"
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Or, you can enable all the tests by commenting out the
|
||||||
|
`ExUnit.configure` line in the test suite.
|
||||||
|
|
||||||
|
```elixir
|
||||||
|
# ExUnit.configure exclude: :pending, trace: true
|
||||||
|
```
|
||||||
|
|
||||||
|
For more detailed information about the Elixir track, please
|
||||||
|
see the [help page](http://exercism.io/languages/elixir).
|
||||||
|
|
||||||
|
## 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,21 @@
|
||||||
|
defmodule RNATranscription do
|
||||||
|
@doc """
|
||||||
|
Transcribes a character list representing DNA nucleotides to RNA
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
iex> RNATranscription.to_rna('ACTG')
|
||||||
|
'UGAC'
|
||||||
|
"""
|
||||||
|
@spec to_rna([char]) :: [char]
|
||||||
|
def to_rna(dna) do
|
||||||
|
Enum.map(dna, fn d ->
|
||||||
|
case d do
|
||||||
|
?G -> ?C
|
||||||
|
?C -> ?G
|
||||||
|
?T -> ?A
|
||||||
|
?A -> ?U
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,35 @@
|
||||||
|
if !System.get_env("EXERCISM_TEST_EXAMPLES") do
|
||||||
|
Code.load_file("rna_transcription.exs", __DIR__)
|
||||||
|
end
|
||||||
|
|
||||||
|
ExUnit.start()
|
||||||
|
ExUnit.configure(trace: true)
|
||||||
|
|
||||||
|
defmodule RNATranscriptionTest do
|
||||||
|
use ExUnit.Case
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "transcribes guanine to cytosine" do
|
||||||
|
assert RNATranscription.to_rna('G') == 'C'
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "transcribes cytosine to guanine" do
|
||||||
|
assert RNATranscription.to_rna('C') == 'G'
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "transcribes thymidine to adenine" do
|
||||||
|
assert RNATranscription.to_rna('T') == 'A'
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "transcribes adenine to uracil" do
|
||||||
|
assert RNATranscription.to_rna('A') == 'U'
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :pending
|
||||||
|
test "it transcribes all dna nucleotides to rna equivalents" do
|
||||||
|
assert RNATranscription.to_rna('ACGTGGTCTTAA') == 'UGCACCAGAAUU'
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue