3.0 KiB
3.0 KiB
title | id | challengeType | forumTopicId |
---|---|---|---|
Farey sequence | 59c3ec9f15068017c96eb8a3 | 5 | 302266 |
Description
Fn
of order n
is the sequence of completely reduced fractions between 0
and 1
which, when in lowest terms, have denominators less than or equal to n
, arranged in order of increasing size.
The Farey sequence is sometimes incorrectly called a Farey series.
Each Farey sequence:
- starts with the value 0, denoted by the fraction $ \frac{0}{1} $
- ends with the value 1, denoted by the fraction $ \frac{1}{1}$.
1
to 5
are:
- ${\bf\it{F}}_1 = \frac{0}{1}, \frac{1}{1}$
- ${\bf\it{F}}_2 = \frac{0}{1}, \frac{1}{2}, \frac{1}{1}$
- ${\bf\it{F}}_3 = \frac{0}{1}, \frac{1}{3}, \frac{1}{2}, \frac{2}{3}, \frac{1}{1}$
- ${\bf\it{F}}_4 = \frac{0}{1}, \frac{1}{4}, \frac{1}{3}, \frac{1}{2}, \frac{2}{3}, \frac{3}{4}, \frac{1}{1}$
- ${\bf\it{F}}_5 = \frac{0}{1}, \frac{1}{5}, \frac{1}{4}, \frac{1}{3}, \frac{2}{5}, \frac{1}{2}, \frac{3}{5}, \frac{2}{3}, \frac{3}{4}, \frac{4}{5}, \frac{1}{1}$
Instructions
n
. The function should have one parameter that is n
. It should return the sequence as an array.
Tests
tests:
- text: <code>farey</code> should be a function.
testString: assert(typeof farey === 'function');
- text: <code>farey(3)</code> should return an array
testString: assert(Array.isArray(farey(3)));
- text: <code>farey(3)</code> should return <code>["1/3","1/2","2/3"]</code>
testString: assert.deepEqual(farey(3), ["1/3","1/2","2/3"]);
- text: <code>farey(4)</code> should return <code>["1/4","1/3","1/2","2/4","2/3","3/4"]</code>
testString: assert.deepEqual(farey(4), ["1/4","1/3","1/2","2/4","2/3","3/4"]);
- text: <code>farey(5)</code> should return <code>["1/5","1/4","1/3","2/5","1/2","2/4","3/5","2/3","3/4","4/5"]</code>
testString: assert.deepEqual(farey(5), ["1/5","1/4","1/3","2/5","1/2","2/4","3/5","2/3","3/4","4/5"]);
Challenge Seed
function farey(n) {
}
Solution
function farey(n){
let farSeq=[];
for(let den = 1; den <= n; den++){
for(let num = 1; num < den; num++){
farSeq.push({
str:num+"/"+den,
val:num/den});
}
}
farSeq.sort(function(a,b){
return a.val-b.val;
});
farSeq=farSeq.map(function(a){
return a.str;
});
return farSeq;
}