Функция pow(x,n) возвращает x в степени n. Иначе говоря, умножает x на себя n раз и возвращает результат. Функция обязана поддерживать только натуральные значения n.
function pow(x, n) {
let result = 1;
for (let i = 0; i < n; i++) {
result *= x;
}
return result;
}
Функция gcd(a,b) возвращает x - наибольший общий делитель двух неотрицательных чисел a и b.
function gcd(a, b) {
while (b !== 0) {
let temp = b;
b = a % b;
a = temp;
}
return a;
}
Функция minDigit(x) возвращает наименьшую цифру целого неотрицательного числа x.
function minDigit(x) {
let min = 9;
while (x > 0) {
let digit = x % 10;
if (digit < min) {
min = digit;
}
x = Math.floor(x / 10);
}
return min;
}
Функция pluralizeRecords(n) для любого целого неотрицательного значения n вернёт строку "В результате выполнения запроса было найдено n записей", в которой для каждого слова будет образована правильная форма множественного числа, в зависимости от конкретного значения n.
function pluralizeRecords(n) {
let recordForm = "записей";
let wasForm = "было найдено";
let lastDigit = n % 10;
let lastTwoDigits = n % 100;
if (lastTwoDigits >= 11 && lastTwoDigits <= 14) {
//pass
} else if (lastDigit === 1) {
recordForm = "запись";
wasForm = "была найдена";
} else if (lastDigit >= 2 && lastDigit <= 4) {
recordForm = "записи";
}
return `В результате выполнения запроса ${wasForm} ${n} ${recordForm}`;
}
Функция fibb(n) для любого целого неотрицательного числа n <= 1000 вернёт n-ое число из последовательности Фибоначчи.
function fibb(n) {
if (n === 0) return 0;
if (n === 1) return 1;
let prev = 0;
let current = 1;
for (let i = 2; i <= n; i++) {
let next = prev + current;
prev = current;
current = next;
}
return current;
}
Функция getSortedArray(array, key) сортирует массив объектов. У функции два параметра: array - массив объектов, оторый нужно отсортировать, и key - ключ, по значению которого нужно произвести сортировку. Порядок сортировки - по возрастанию.
function getSortedArray(array, key) {
for (let i = 0; i < array.length; i++) {
for (let j = 0; j < array.length - 1 - i; j++) {
if (array[j][key] > array[j + 1][key]) {
let temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
return array;
}
Функция cesar(str, shift, action) производит шифрование и дешифровку строки str с использованием шифра Цезаря. В качестве алфавита используется русский алфавит. Параметр shift отвечает за сдвиг алфавита. Если action == 'encode', функция производит шифрование, а если action == 'decode' - дешифровку.
function cesar(str, shift, action) {
const alphabet = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
const alphabetUpper = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
let result = '';
for (let i = 0; i < str.length; i++) {
let char = str[i];
let isUpper = false;
let index = -1;
if (alphabetUpper.indexOf(char) !== -1) {
isUpper = true;
index = alphabetUpper.indexOf(char);
} else if (alphabet.indexOf(char) !== -1) {
index = alphabet.indexOf(char);
}
if (index !== -1) {
let newIndex;
if (action === 'encode') {
newIndex = (index + shift) % alphabet.length;
} else {
newIndex = (index - shift + alphabet.length) % alphabet.length;
}
if (isUpper) {
result += alphabetUpper[newIndex];
} else {
result += alphabet[newIndex];
}
} else {
result += char;
}
}
return result;
}
// Расшифровка: "эзтыхз фзъзъз" со сдвигом 8 = "хакуна матата"