- Реализуйте функцию
random(min, max), возвращающую псевдо-случайное значение отminдоmax. ИспользуйтеMath.random()иMath.floor(). При вызовеrandom(max)нужно считать, чтоmin = 0. - Реализуйте функцию
generateKey(length, characters), возвращающую строку случайных символов из набораcharactersдлинойlength. Например:
const characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
const key = generateKey(16, characters);
console.log(key); // eg599gb60q926j8i- Преобразуйте IP адрес (IPv4) в число, содержащее 4 байта адреса, сдвинутые битовым сдвигом, по такой схеме:
- 1 байт сдвинут 3 раза на 8 бит влево
- 2 байт сдвинут 2 раза на 8 бит влево
- 3 байт сдвинут 1 раз на 8 бит влево
- 4 байт не сдвинут Например: '10.0.0.1':
- Преобразовываем строку
'10.0.0.1'в массив['10', '0', '0', '1'] - Преобразовываем массив
['10', '0', '0', '1']в массив[10, 0, 0, 1] - Сдвигаем все элементы по приведенной схеме при помощи цикла:
[10 << 8 << 8 << 8, 0 << 8 << 8, 0 << 8, 1]и получаем[167772160, 0, 0, 1] - Суммируем все элементы и получаем
167772161 - Оптимизируем код через использование
Array.prototype.reduceИспользуйте значение аргумента функции по умолчанию '127.0.0.1'.
Еще примеры:
127.0.0.1 -> 2130706433
10.0.0.1 -> 167772161
192.168.1.10 -> -1062731510
165.225.133.150 -> -1511946858
0.0.0.0 -> 0
8.8.8.8 -> 0x08080808- Реализуйте интроспекцию объекта:
- Проитерируйте все ключи объекта
iface - Возьмите ключи функционального типа
- Для каждой функции возьмите количество аргументов
- Сохраните результаты в двумерный массив
Например, из:
{
m1: x => [x],
m2: function (x, y) {
return [x, y];
},
m3(x, y, z) {
return [x, y, z];
}
}нужно получить:
[
['m1', 1],
['m2', 2],
['m3', 3]
]