Yevgeny Petukhov
2018-05-21T15:23:51Z

task1.md

Найдите делители

Напишите функцию divisors, которая принимает одно целое число и возвращает все целые делители (исключая 1 и самого себя). Если это число простое необходимо вернуть "(число) is prime".

Пример:

divisors(12); // [2,3,4,6]
divisors(25); // [5]
divisors(13); // "13 is prime"

task2.md

Форматирование цены:

Ваша цель состоит в том, чтобы написать функцию numberToPrice которая бы добавляла форматирование к входному числу, чтобы отобразить его в качестве цены.

Пояснения:

Числа должны использовать стандартную запятую для каждых 3 значимых символа и точку как разделитель копеек.

Копейки должны быть усечены до 2 десятичных знаков, в случае, если десятичная часть числа 1 символ длиной или нет, вы должны добавить 0, так что результат всегда имел 2 символа (например, 1 -> 1.00, 1.0111 -> 1.01, 1.1 -> 1.10).

Функция должна возвращать строку 'NaN', если входные данные не являются допустимым числом

Например:

numberToPrice(13253.5123) === '13,253.51'

task3.md

Заменить символы на позицию в алфавите

Все что нужно сделать это написать функцию alphabet_position, которая заменит символы входящей строки на их порядок в алфавите (в задаче используются только английский алфавит). Игнорируйте все символы которые не являются буквами.

Пояснение: "a" должно быть "1", "b" -> "2", и тд.

Пример:

alphabet_position("The sunset sets at twelve o' clock.") ===
    "20 8 5 19 21 14 19 5 20 19 5 20 19 1 20 20 23 5 12 22 5 15 3 12 15 3 11"

task4.md

Уникальные в списке

Реализуем функцию uniqueInOrder, которая принимает в качестве аргумента последовательность и возвращает список элементов без каких-либо элементов с одинаковым значением рядом друг с другом и сохраняя исходный порядок элементов.

Например:

rle('AAAABBBCCDAABBB') == ['A', 'B', 'C', 'D', 'A', 'B']
rle('ABBCcAD')         == ['A', 'B', 'C', 'c', 'A', 'D']
rle([1,2,2,3,3])       == [1,2,3]

task5.md

Сортировка предложения

Ваша задача - отсортировать заданную строку. Каждое слово в строке будет содержать одно число. Это число есть позиция, которую должно занимать слово в результате.

Примечание: цифры могут быть от 1 до 9. Таким образом, 1 будет первым словом (не 0).

Если входная строка пуста, верните пустую строку. Слова во входной строке будут содержать только допустимые последовательные числа.

Пример:

order("is2 Thi1s T4est 3А") === "Thi1s is2 3А T4est"

task6.md

N минимальных элементов в оригинальном порядке

Ваша задача состоит в том, чтобы написать функцию firstNSmallest, которая делает именно то, что предлагает Заголовок задания.

Ограничения и пояснения:

количество возвращаемых элементов не может превышать длину массива / списка / вектора;

элементы можно дублировать;

в случае дубликатов просто верните их в соответствии с исходным порядком (см. третий пример для большей ясности).

Несколько примеров:

firstNSmallest([1,2,3,4,5],3) === [1,2,3]
firstNSmallest([5,4,3,2,1],3) === [3,2,1]
firstNSmallest([1,2,3,4,1],3) === [1,2,1]
firstNSmallest([1,2,3,-4,0],3) === [1,-4,0]
firstNSmallest([1,2,3,4,5],0) === []

task7.md

Преобразовать строку в CamelCase

Напишите метод, который будет преобразовывать слова разделенные тире/подчеркиванием в CamelCase.

Замечание: Первое слово в выходных данных должно быть с заглавной только тогда, когда в исходном слове было с заглавной.

toCamelCase("the-stealth-warrior") // returns "theStealthWarrior"

toCamelCase("The_Stealth_Warrior") // returns "TheStealthWarrior"

task8.md

Факторизация целых чисел

Факториза́цией натурального числа называется его разложение в произведение простых множителей. Существование и единственность (с точностью до порядка следования множителей) такого разложения следует из основной теоремы арифметики.

Например, первичная факторизация 24 => (2^3) * (3^1).

Необходимо реализовать класс PrimeFactorizer, который принимает на вход целое положительное число и имеет свойство factor (ключи будут простыми числами, а значения кратности).

new PrimeFactorizer(24).factor // { '2': 3, '3': 1 }

task9.md

Потерянное число последовательности

Арифметическая прогрессия определяется как та, в которой существует постоянная разница между последовательными членами данной серии чисел. Вам предоставляются последовательные элементы арифметической прогрессии. Однако есть одна загвоздка: ровно один член из исходной серии отсутствует в наборе чисел, которые были даны вам. Найдите недостающий элемент последовательности.

Вы должны написать функцию findMissing(list), список всегда будет как минимум 3 числа. Пропущенное значение никогда не будет идти первым или последним.

Например:

findMissing([1, 3, 5, 9, 11]) == 7