Skip to content

Commit 516d3a6

Browse files
committed
Add exercises description
1 parent fde10ba commit 516d3a6

1 file changed

Lines changed: 60 additions & 0 deletions

File tree

Exercises.ru.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# Упражнения: Функции
2+
3+
1. Реализуйте функцию `random(min, max)`, возвращающую псевдо-случайное
4+
значение от `min` до `max`. Используйте `Math.random()` и `Math.floor()`
5+
2. Реализуйте функцию `generateKey(length, characters)`, возвращающую строку
6+
случайных символов из набора `characters` длиной `length`. Например:
7+
```js
8+
const characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
9+
const key = generateKey(16, characters);
10+
console.log(key); // eg599gb60q926j8i
11+
```
12+
3. Преобразуйте IP адрес (IPv4) в число, содержащее 4 байта адреса,
13+
сдвинутые битовым сдвигом, по такой схеме:
14+
- 1 байт сдвинут 3 раза на 8 бит влево
15+
- 2 байт сдвинут 2 раза на 8 бит влево
16+
- 3 байт сдвинут 1 раз на 8 бит влево
17+
- 1 байт не сдвинут
18+
Например: '10.0.0.1':
19+
- Преобразовываем строку `'10.0.0.1'` в массив `['10', '0', '0', '1']`
20+
- Преобразовываем массив `['10', '0', '0', '1']` в массив `[10, 0, 0, 1]`
21+
- Сдвигаем все элементы по приведенной схеме при помощи цикла:
22+
`[10 << 8 << 8 << 8, 0 << 8 << 8, 0 << 8, 1]` и получаем `[167772160, 0, 0, 1]`
23+
- Суммируем все элементы и получаем `167772161`
24+
- Оптимизируем код через использование `Array.prototype.reduce`
25+
Используйте значение аргумента функции по умолчанию '127.0.0.1'.
26+
Еще примеры:
27+
```
28+
127.0.0.1 -> 2130706433
29+
10.0.0.1 -> 167772161
30+
192.168.1.10 -> -1062731510
31+
165.225.133.150 -> -1511946858
32+
0.0.0.0 -> 0
33+
8.8.8.8 -> 0x08080808
34+
```
35+
4. Реализуйте интроспекцию объекта:
36+
- Проитериуйте все ключи объекта `iface`
37+
- Возьмите ключи функционального типа
38+
- Для каждой функции возьмите длину
39+
- Сохраните результаты в двумерный массив
40+
41+
Например, из:
42+
```js
43+
{
44+
m1: x => [x],
45+
m2: function (x, y) {
46+
return [x, y];
47+
},
48+
m3(x, y, z) {
49+
return [x, y, z];
50+
}
51+
}
52+
```
53+
нужно получить:
54+
```js
55+
[
56+
['m1', 1],
57+
['m2', 2],
58+
['m3', 3]
59+
]
60+
```

0 commit comments

Comments
 (0)