Skip to content

Commit 807258d

Browse files
committed
Added sieve exercise
Missed test ignores on rna-transcription
1 parent 0aa2f51 commit 807258d

File tree

4 files changed

+75
-1
lines changed

4 files changed

+75
-1
lines changed

config.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
"accumulate",
3232
"crypto-square",
3333
"trinary",
34-
"rna-transcription"
34+
"rna-transcription",
35+
"sieve"
3536
],
3637
"deprecated": [
3738

rna-transcription/ComplementTest.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,54 +9,63 @@ public void Rna_complement_of_cytosine_is_guanine()
99
Assert.That(Complement.OfDna("C"), Is.EqualTo("G"));
1010
}
1111

12+
[Ignore]
1213
[Test]
1314
public void Rna_complement_of_guanine_is_cytosine()
1415
{
1516
Assert.That(Complement.OfDna("G"), Is.EqualTo("C"));
1617
}
1718

19+
[Ignore]
1820
[Test]
1921
public void Rna_complement_of_thymine_is_adenine()
2022
{
2123
Assert.That(Complement.OfDna("T"), Is.EqualTo("A"));
2224
}
2325

26+
[Ignore]
2427
[Test]
2528
public void Rna_complement_of_adenine_is_uracil()
2629
{
2730
Assert.That(Complement.OfDna("A"), Is.EqualTo("U"));
2831
}
2932

33+
[Ignore]
3034
[Test]
3135
public void Rna_complement()
3236
{
3337
Assert.That(Complement.OfDna("ACGTGGTCTTAA"), Is.EqualTo("UGCACCAGAAUU"));
3438
}
3539

40+
[Ignore]
3641
[Test]
3742
public void Dna_complement_of_cytosine_is_guanine()
3843
{
3944
Assert.That(Complement.OfRna("C"), Is.EqualTo("G"));
4045
}
4146

47+
[Ignore]
4248
[Test]
4349
public void Dna_complement_of_guanine_is_cytosine()
4450
{
4551
Assert.That(Complement.OfRna("G"), Is.EqualTo("C"));
4652
}
4753

54+
[Ignore]
4855
[Test]
4956
public void Dna_complement_of_uracil_is_adenine()
5057
{
5158
Assert.That(Complement.OfRna("U"), Is.EqualTo("A"));
5259
}
5360

61+
[Ignore]
5462
[Test]
5563
public void Dna_complement_of_adenine_is_thymine()
5664
{
5765
Assert.That(Complement.OfRna("A"), Is.EqualTo("T"));
5866
}
5967

68+
[Ignore]
6069
[Test]
6170
public void Dna_complement()
6271
{

sieve/Example.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System.Collections.Generic;
2+
using System.Linq;
3+
4+
public class Sieve
5+
{
6+
private readonly int limit;
7+
public int[] Primes { get; private set; }
8+
9+
public Sieve(int limit)
10+
{
11+
this.limit = limit;
12+
InitializePrimes();
13+
}
14+
15+
private void InitializePrimes()
16+
{
17+
var candidates = new Queue<int>(Enumerable.Range(2, limit - 1));
18+
var primes = new List<int>();
19+
do
20+
{
21+
var prime = candidates.Dequeue();
22+
primes.Add(prime);
23+
candidates = new Queue<int>(candidates.Where(x => x % prime != 0));
24+
} while (candidates.Any());
25+
Primes = primes.ToArray();
26+
}
27+
}

sieve/SieveTest.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
using NUnit.Framework;
2+
3+
[TestFixture]
4+
public class SieveTest
5+
{
6+
[Test]
7+
public void Finds_first_prime()
8+
{
9+
Assert.That(new Sieve(2).Primes, Is.EqualTo(new[] { 2 }));
10+
}
11+
12+
[Ignore]
13+
[Test]
14+
public void Finds_primes_up_to_10()
15+
{
16+
Assert.That(new Sieve(10).Primes, Is.EqualTo(new[] { 2, 3, 5, 7 }));
17+
}
18+
19+
[Ignore]
20+
[Test]
21+
public void Finds_primes_up_to_1000()
22+
{
23+
Assert.That(new Sieve(1000).Primes,
24+
Is.EqualTo(new[]
25+
{
26+
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101,
27+
103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199,
28+
211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
29+
331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443,
30+
449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577,
31+
587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
32+
709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839,
33+
853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983,
34+
991, 997
35+
}));
36+
}
37+
}

0 commit comments

Comments
 (0)