Skip to content

Commit 95e5670

Browse files
Balashov NikitaOlegLustenko
authored andcommitted
homework-8
1 parent dd15456 commit 95e5670

File tree

2 files changed

+116
-0
lines changed

2 files changed

+116
-0
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Home work 8</title>
6+
</head>
7+
<body>
8+
9+
<script src="src/main.js"></script>
10+
</body>
11+
</html>
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
'use strict';
2+
3+
/*
4+
*
5+
* TASK 1
6+
*
7+
* Создайте функцию которая будет запоминать переданные
8+
* ей аргументы, и прибавлять их в строку
9+
* и отображать в консоле всю строку
10+
*
11+
*
12+
* */
13+
14+
function solution1(someString) {
15+
/* ВАШ КОД */
16+
let stringWhatRemeberAllArguments = '';
17+
return function (someString) {
18+
stringWhatRemeberAllArguments = stringWhatRemeberAllArguments + ' ' + someString;
19+
return stringWhatRemeberAllArguments;
20+
}
21+
}
22+
23+
let stringBuffer = solution1('');
24+
25+
console.log(stringBuffer('Замыкания')); // Замыкания
26+
console.log(stringBuffer('Использовать нужно')); // Замыкания Использовать нужно
27+
console.log(stringBuffer('Привет')); // Замыкания Использовать нужно Привет вызываем много раз
28+
29+
/*
30+
*
31+
* TASK 2
32+
* Напишите функцию которая принимает в качестве аргумента строку
33+
* из скобочек и посчитайте, * что все скобочки закрываются корректно
34+
*
35+
* */
36+
37+
function validBraces(str) {
38+
let stack = [];
39+
let last;
40+
41+
for (let i = 0; i < str.length; i++) {
42+
if (str[i] == '[' || str[i] == '(' || str[i] == '{' || str[i] == '<') {
43+
stack.push(str[i]);
44+
} else if (str[i] == ']' || str[i] == ')' || str[i] == '}' || str[i] == '>') {
45+
if (stack.length) {
46+
last = stack[stack.length - 1];
47+
if ((last == '[' && str[i] == ']') || (last == '(' && str[i] == ')') ||
48+
(last == '{' && str[i] == '}') || (last == '<' && str[i] == '>')) {
49+
stack.pop();
50+
}
51+
} else {
52+
return false;
53+
}
54+
}
55+
}
56+
return (!stack.length);
57+
}
58+
59+
console.log(validBraces('(){}[]')); // => returns true
60+
console.log(validBraces('(}')); // => returns false
61+
console.log(validBraces('[(])')); // => returns false
62+
console.log(validBraces('([{}])')); // => returns true
63+
console.log(validBraces('({[]})')); // => returns true
64+
65+
// @SUPER
66+
67+
/*
68+
*
69+
* Напишите функцию которая будет принимать одно число и выводить сумму
70+
* всех натуральных чисел
71+
* sum(5) // 5+4+3+2+1
72+
*
73+
* Вычисления должны кешироваться, если в функцию попадает закешированное
74+
* значение, в консоле должно отобразиться
75+
* Значение взято из кэша
76+
*
77+
* Нельзя использовать внешние значения/переменные/функции
78+
*
79+
* */
80+
81+
82+
let solution = function() {
83+
84+
let cache = {};
85+
function sum(num) {
86+
if (cache[num]) {
87+
return `${cache[num]} Значение взято из кэша`;
88+
} else {
89+
let resultSum = num;
90+
for (let i = 1; i < num; i++) resultSum += i;
91+
cache[num] = resultSum;
92+
return `${resultSum} Значение закешировано`;
93+
}
94+
}
95+
96+
return sum;
97+
}
98+
99+
let superPuper = solution();
100+
101+
console.log(superPuper(5)); // 15 Значение кешировано
102+
console.log(superPuper(5)); // 15 Значение взято из кэш
103+
104+
console.log(superPuper(6)); // 21 Кешировано
105+
console.log(superPuper(6)); // 21 Значение взято из кэша

0 commit comments

Comments
 (0)