Skip to content

Commit 5cba6c3

Browse files
committed
added table of problems
1 parent c01bddc commit 5cba6c3

File tree

5 files changed

+1503
-12
lines changed

5 files changed

+1503
-12
lines changed

package-lock.json

+16-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@
3838
},
3939
"dependencies": {
4040
"@types/cli-progress": "^3.11.6",
41+
"@types/workerpool": "^6.4.7",
4142
"cli-progress": "^3.12.0",
42-
"reflect-metadata": "^0.2.2"
43+
"reflect-metadata": "^0.2.2",
44+
"workerpool": "^9.1.3"
4345
}
4446
}

src/js_core/emiter-to-iterator.ts

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { on, EventEmitter } from 'events';
2+
import { get } from 'http';
3+
4+
export async function* fun(ee: EventEmitter) {
5+
console.log('Генератор запущен');
6+
7+
const res = get('a', (response) => {
8+
9+
})
10+
11+
12+
for await (const eventArgs of on(res, 'data', { close: ['end'] })) {
13+
yield eventArgs[0];
14+
}
15+
console.log('Итератор on завершён');
16+
}
17+
18+
const ee = new EventEmitter();
19+
20+
async function test(){
21+
const generator = fun(ee);
22+
23+
for await (const val of generator) {
24+
console.log('Получено:', val);
25+
}
26+
27+
console.log('Генератор завершён');
28+
};
29+
30+
// Эмитируем события
31+
setTimeout(() => ee.emit('data', 'First'), 1000);
32+
setTimeout(() => ee.emit('data', 'Second'), 2000);
33+
setTimeout(() => ee.emit('data', 'Third'), 3000);
34+
setTimeout(() => ee.emit('data', 'Fourth'), 4000);
35+
setTimeout(() => ee.emit('end', 'ADSSAD'), 5000);

src/string/find-anagrams.ts

+2-10
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,23 @@
11
function findAnagrams(s: string, p: string): number[] {
2+
if (s.length < p.length) return [];
3+
24
const result: number[] = [];
3-
if (s.length < p.length) return result;
4-
55
const pCount = new Array(26).fill(0);
66
const sCount = new Array(26).fill(0);
77

88
const aCharCode = 'a'.charCodeAt(0);
99

10-
// Заполняем счетчик для строки p
1110
for (let i = 0; i < p.length; i++) {
1211
pCount[p.charCodeAt(i) - aCharCode]++;
1312
sCount[s.charCodeAt(i) - aCharCode]++;
1413
}
15-
16-
// Проверяем начальное окно
1714
if (pCount.every((elem, i) => elem === sCount[i])) {
1815
result.push(0);
1916
}
20-
21-
// Скользящее окно по строке s
2217
for (let i = p.length; i < s.length; i++) {
23-
// Добавляем символ в окно
2418
sCount[s.charCodeAt(i) - aCharCode]++;
25-
// Убираем символ за пределами окна
2619
sCount[s.charCodeAt(i - p.length) - aCharCode]--;
2720

28-
// Проверяем текущее окно
2921
if (pCount.every((elem, i) => elem === sCount[i])) {
3022
result.push(i - p.length + 1);
3123
}

0 commit comments

Comments
 (0)