60 lines
2.4 KiB
Markdown
60 lines
2.4 KiB
Markdown
# Nucleotide Count
|
|
|
|
Each of us inherits from our biological parents a set of chemical instructions known as DNA that influence how our bodies are constructed. All known life depends on DNA!
|
|
|
|
> Note: You do not need to understand anything about nucleotides or DNA to complete this exercise.
|
|
|
|
DNA is a long chain of other chemicals and the most important are the four nucleotides, adenine, cytosine, guanine and thymine. A single DNA chain can contain billions of these four nucleotides and the order in which they occur is important!
|
|
We call the order of these nucleotides in a bit of DNA a "DNA sequence".
|
|
|
|
We represent a DNA sequence as an ordered collection of these four nucleotides and a common way to do that is with a string of characters such as "ATTACG" for a DNA sequence of 6 nucleotides.
|
|
'A' for adenine, 'C' for cytosine, 'G' for guanine, and 'T' for thymine.
|
|
|
|
Given a string representing a DNA sequence, count how many of each nucleotide is present.
|
|
If the string contains characters that aren't A, C, G, or T then it is invalid and you should signal an error.
|
|
|
|
For example:
|
|
|
|
```
|
|
"GATTACA" -> 'A': 3, 'C': 1, 'G': 1, 'T': 2
|
|
"INVALID" -> error
|
|
```
|
|
|
|
## Getting Started
|
|
|
|
Make sure you have read the "Guides" section of the
|
|
[C track][c-track] on the Exercism site. This covers
|
|
the basic information on setting up the development environment expected
|
|
by the exercises.
|
|
|
|
## Passing the Tests
|
|
|
|
Get the first test compiling, linking and passing by following the [three
|
|
rules of test-driven development][3-tdd-rules].
|
|
|
|
The included makefile can be used to create and run the tests using the `test`
|
|
task.
|
|
|
|
make test
|
|
|
|
Create just the functions you need to satisfy any compiler errors and get the
|
|
test to fail. Then write just enough code to get the test to pass. Once you've
|
|
done that, move onto the next test.
|
|
|
|
As you progress through the tests, take the time to refactor your
|
|
implementation for readability and expressiveness and then go on to the next
|
|
test.
|
|
|
|
Try to use standard C99 facilities in preference to writing your own
|
|
low-level algorithms or facilities by hand.
|
|
|
|
## Source
|
|
|
|
The Calculating DNA Nucleotides_problem at Rosalind [http://rosalind.info/problems/dna/](http://rosalind.info/problems/dna/)
|
|
|
|
## Submitting Incomplete Solutions
|
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
|
|
[c-track]: https://exercism.io/my/tracks/c
|
|
[3-tdd-rules]: http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd
|