Пары неотрицательных целых чисел можно представить числами и арифметическими операциями.
Можно считать, что пара чисел a и b – это 2^a * 3^b
.
Функции car()
и cdr()
при этом будут просто вычислять значения a
и b
(кратности двойки и тройки, соответственно),
раскладывая аргумент на множители.
Например, имея пару 5, 8
в виде числа 209952 (2^5 * 3^8
), можно получить первый элемент пары, разложив число на
множители и вычислив факторизацию для числа 2, а второй элемент пары – разложив число на множители и вычислив факторизацию
для числа 3.
pairs.js
Реализуйте и экспортируйте следующие функции в соответствии с алгоритмом выше:
cons
car
cdr
Пример:
const pair = cons(5, 8); // 2^5 * 3^8 = 209952
car(pair); // 5
cdr(pair); // 8
Подсказки
- Пара – это число, поэтому, чтобы получить из него исходные значения a и b, нужно раскладывать число на множители.
Для полного доступа к испытанию нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.
Отзывы

Эта практика супер. Довольно тяжело было решить, но после решения, ощущаешь результат.