--- title: Farey sequence id: 59c3ec9f15068017c96eb8a3 challengeType: 5 forumTopicId: 302266 localeTitle: Последовательность Farey --- ## Description

Напишите функцию, которая возвращает последовательность Farey порядка n. Функция должна иметь один параметр, который равен n. Он должен возвращать последовательность в виде массива. Подробнее читайте ниже:

Последовательность Farey F n порядка n представляет собой последовательность полностью восстановленных фракций между 0 и 1, которые, если в младших членах, имеют знаменатели, меньшие или равные n, упорядоченные в порядке возрастания.

Последовательность Farey иногда некорректно называется серией Farey.

Каждая последовательность Farey:

:: * начинается со значения 0, обозначаемого дробью $ \ frac {0} {1} $

:: * заканчивается значением 1, обозначаемым дробью $ \ frac {1} {1} $.

Последовательности Farey от 1 до 5:

$ {\ 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
Write a function that returns the Farey sequence of order n. The function should have one parameter that is n. It should return the sequence as an array.
## Tests
```yml tests: - text: farey is a function. testString: assert(typeof farey === 'function'); - text: farey(3) should return an array testString: assert(Array.isArray(farey(3))); - text: farey(3) should return ["1/3","1/2","2/3"] testString: assert.deepEqual(farey(3), ["1/3","1/2","2/3"]); - text: farey(4) should return ["1/4","1/3","1/2","2/4","2/3","3/4"] testString: assert.deepEqual(farey(4), ["1/4","1/3","1/2","2/4","2/3","3/4"]); - text: farey(5) should return ["1/5","1/4","1/3","2/5","1/2","2/4","3/5","2/3","3/4","4/5"] 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
```js function farey(n) { // Good luck! } ```
## Solution
```js 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; } ```