You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Your task is to, given a target word and a set of candidate words, to find the subset of the candidates that are anagrams of the target.
3
+
Given a target word and one or more candidate words, your task is to find the candidates that are anagrams of the target.
4
4
5
5
An anagram is a rearrangement of letters to form a new word: for example `"owns"` is an anagram of `"snow"`.
6
6
A word is _not_ its own anagram: for example, `"stop"` is not an anagram of `"stop"`.
7
7
8
-
The target and candidates are words of one or more ASCII alphabetic characters (`A`-`Z` and `a`-`z`).
9
-
Lowercase and uppercase characters are equivalent: for example, `"PoTS"` is an anagram of `"sTOp"`, but `StoP` is not an anagram of `sTOp`.
10
-
The anagram set is the subset of the candidate set that are anagrams of the target (in any order).
11
-
Words in the anagram set should have the same letter case as in the candidate set.
8
+
The target word and candidate words are made up of one or more ASCII alphabetic characters (`A`-`Z` and `a`-`z`).
9
+
Lowercase and uppercase characters are equivalent: for example, `"PoTS"` is an anagram of `"sTOp"`, but `"StoP"` is not an anagram of `"sTOp"`.
10
+
The words you need to find should be taken from the candidate words, using the same letter case.
12
11
13
-
Given the target `"stone"` and candidates `"stone"`, `"tones"`, `"banana"`, `"tons"`, `"notes"`, `"Seton"`, the anagram set is `"tones"`, `"notes"`, `"Seton"`.
12
+
Given the target `"stone"` and the candidate words `"stone"`, `"tones"`, `"banana"`, `"tons"`, `"notes"`, and `"Seton"`, the anagram words you need to find are `"tones"`, `"notes"`, and`"Seton"`.
Copy file name to clipboardexpand all lines: exercises/practice/sieve/.docs/instructions.md
+67-8
Original file line number
Diff line number
Diff line change
@@ -6,37 +6,96 @@ A prime number is a number larger than 1 that is only divisible by 1 and itself.
6
6
For example, 2, 3, 5, 7, 11, and 13 are prime numbers.
7
7
By contrast, 6 is _not_ a prime number as it not only divisible by 1 and itself, but also by 2 and 3.
8
8
9
-
To use the Sieve of Eratosthenes, you first create a list of all the numbers between 2 and your given number.
10
-
Then you repeat the following steps:
9
+
To use the Sieve of Eratosthenes, first, write out all the numbers from 2 up to and including your given number.
10
+
Then, follow these steps:
11
11
12
-
1. Find the next unmarked number in your list (skipping over marked numbers).
12
+
1. Find the next unmarked number (skipping over marked numbers).
13
13
This is a prime number.
14
14
2. Mark all the multiples of that prime number as **not** prime.
15
15
16
-
You keep repeating these steps until you've gone through every number in your list.
16
+
Repeat the steps until you've gone through every number.
17
17
At the end, all the unmarked numbers are prime.
18
18
19
19
~~~~exercism/note
20
-
The tests don't check that you've implemented the algorithm, only that you've come up with the correct list of primes.
21
-
To check you are implementing the Sieve correctly, a good first test is to check that you do not use division or remainder operations.
20
+
The Sieve of Eratosthenes marks off multiples of each prime using addition (repeatedly adding the prime) or multiplication (directly computing its multiples), rather than checking each number for divisibility.
21
+
22
+
The tests don't check that you've implemented the algorithm, only that you've come up with the correct primes.
22
23
~~~~
23
24
24
25
## Example
25
26
26
27
Let's say you're finding the primes less than or equal to 10.
27
28
28
-
- List out 2, 3, 4, 5, 6, 7, 8, 9, 10, leaving them all unmarked.
29
+
- Write out 2, 3, 4, 5, 6, 7, 8, 9, 10, leaving them all unmarked.
30
+
31
+
```text
32
+
2 3 4 5 6 7 8 9 10
33
+
```
34
+
29
35
- 2 is unmarked and is therefore a prime.
30
36
Mark 4, 6, 8 and 10 as "not prime".
37
+
38
+
```text
39
+
2 3 [4] 5 [6] 7 [8] 9 [10]
40
+
↑
41
+
```
42
+
31
43
- 3 is unmarked and is therefore a prime.
32
44
Mark 6 and 9 as not prime _(marking 6 is optional - as it's already been marked)_.
45
+
46
+
```text
47
+
2 3 [4] 5 [6] 7 [8] [9] [10]
48
+
↑
49
+
```
50
+
33
51
- 4 is marked as "not prime", so we skip over it.
52
+
53
+
```text
54
+
2 3 [4] 5 [6] 7 [8] [9] [10]
55
+
↑
56
+
```
57
+
34
58
- 5 is unmarked and is therefore a prime.
35
59
Mark 10 as not prime _(optional - as it's already been marked)_.
60
+
61
+
```text
62
+
2 3 [4] 5 [6] 7 [8] [9] [10]
63
+
↑
64
+
```
65
+
36
66
- 6 is marked as "not prime", so we skip over it.
67
+
68
+
```text
69
+
2 3 [4] 5 [6] 7 [8] [9] [10]
70
+
↑
71
+
```
72
+
37
73
- 7 is unmarked and is therefore a prime.
74
+
75
+
```text
76
+
2 3 [4] 5 [6] 7 [8] [9] [10]
77
+
↑
78
+
```
79
+
38
80
- 8 is marked as "not prime", so we skip over it.
81
+
82
+
```text
83
+
2 3 [4] 5 [6] 7 [8] [9] [10]
84
+
↑
85
+
```
86
+
39
87
- 9 is marked as "not prime", so we skip over it.
88
+
89
+
```text
90
+
2 3 [4] 5 [6] 7 [8] [9] [10]
91
+
↑
92
+
```
93
+
40
94
- 10 is marked as "not prime", so we stop as there are no more numbers to check.
41
95
42
-
You've examined all numbers and found 2, 3, 5, and 7 are still unmarked, which means they're the primes less than or equal to 10.
96
+
```text
97
+
2 3 [4] 5 [6] 7 [8] [9] [10]
98
+
↑
99
+
```
100
+
101
+
You've examined all the numbers and found that 2, 3, 5, and 7 are still unmarked, meaning they're the primes less than or equal to 10.
0 commit comments