Skip to content

Commit a2f04c4

Browse files
committed
Add exercises description
1 parent fde10ba commit a2f04c4

1 file changed

Lines changed: 61 additions & 0 deletions

File tree

Exercises.ru.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
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+
```
29+
127.0.0.1 -> 2130706433
30+
10.0.0.1 -> 167772161
31+
192.168.1.10 -> -1062731510
32+
165.225.133.150 -> -1511946858
33+
0.0.0.0 -> 0
34+
8.8.8.8 -> 0x08080808
35+
```
36+
4. Реализуйте интроспекцию объекта:
37+
- Проитериуйте все ключи объекта `iface`
38+
- Возьмите ключи функционального типа
39+
- Для каждой функции возьмите длину
40+
- Сохраните результаты в двумерный массив
41+
42+
Например, из:
43+
```js
44+
{
45+
m1: x => [x],
46+
m2: function (x, y) {
47+
return [x, y];
48+
},
49+
m3(x, y, z) {
50+
return [x, y, z];
51+
}
52+
}
53+
```
54+
нужно получить:
55+
```js
56+
[
57+
['m1', 1],
58+
['m2', 2],
59+
['m3', 3]
60+
]
61+
```

0 commit comments

Comments
 (0)