Эта задача - вариация рассказа Артура Кларка .
(Решители должны знать о последствиях выполнения этой задачи.)
Подробно, чтобы указать, что подразумевается под «именем»:
Целое число 1 имеет 1 имя «1».
Целое число 2 имеет 2 имени «1 + 1» и «2».
Целое число 3 имеет 3 имени «1 + 1 + 1», «2 + 1» и «3».
Целое число 4 имеет 5 имен «1 + 1 + 1 + 1», «2 + 1 + 1», «2 + 2», «3 + 1», «4».
Целое число 5 имеет 7 имен «1 + 1 + 1 + 1 + 1», «2 + 1 + 1 + 1», «2 + 2 + 1», «3 + 1 + 1», «3 + 2», «4 + 1», «5».
Это можно визуализировать в следующем виде:
1
1 1
1 1 1
1 2 1 1
1 2 2 1 1
1 3 3 2 1 1
Где строка $ n $ соответствует целому числу $ n $, а каждый столбец $ C $ в строке $ m $ слева направо соответствует числу имен, начинающихся с $ C $.
Необязательно заметим, что сумма $ n $ -ой строки $ P (n) $ является целочисленной статистикой .
задачаРеализуйте функцию, которая возвращает сумму $ n $ -ой строки.
numberOfNames - это функция.
testString: 'assert(typeof numberOfNames === "function", "numberOfNames is a function.");'
- text: numberOfNames(5) должно равняться 7.
testString: 'assert.equal(numberOfNames(5), 7, "numberOfNames(5) should equal 7.");'
- text: numberOfNames(12) должно равняться 77.
testString: 'assert.equal(numberOfNames(12), 77, "numberOfNames(12) should equal 77.");'
- text: numberOfNames(18) должно равняться 385.
testString: 'assert.equal(numberOfNames(18), 385, "numberOfNames(18) should equal 385.");'
- text: numberOfNames(23) должно равняться 1255.
testString: 'assert.equal(numberOfNames(23), 1255, "numberOfNames(23) should equal 1255.");'
- text: numberOfNames(42) должен равняться 53174.
testString: 'assert.equal(numberOfNames(42), 53174, "numberOfNames(42) should equal 53174.");'
- text: numberOfNames(123) должно равняться 2552338241.
testString: 'assert.equal(numberOfNames(123), 2552338241, "numberOfNames(123) should equal 2552338241.");'
```