1+ 'use strict' ;
2+
3+ /*
4+ *
5+ * TASK 1
6+ *
7+ * Создайте функцию которая будет запоминать переданные
8+ * ей аргументы, и прибавлять их в строку
9+ * и отображать в консоле всю строку
10+ *
11+ *
12+ * */
13+
14+ function solution1 ( ) {
15+ let str = '' ;
16+ return function ( text ) {
17+ return str += text
18+ }
19+
20+ }
21+
22+ let stringBuffer = solution1 ( ) ;
23+
24+ console . log ( stringBuffer ( 'Замыкания' ) ) ; // Замыкания
25+ console . log ( stringBuffer ( 'Использовать нужно' ) ) ; // Замыкания Использовать нужно
26+ console . log ( stringBuffer ( 'Привет' ) ) ; // Замыкания Использовать нужно Привет вызываем много раз
27+
28+ /*
29+ *
30+ * TASK 2
31+ * Напишите функцию которая принимает в качестве аргумента строку
32+ * из скобочек и посчитайте, * что все скобочки закрываются корректно
33+ *
34+ * */
35+
36+ function validBraces ( str ) {
37+ let stack = [ ] ;
38+ for ( let i = 0 ; i < str . length ; i ++ ) {
39+ if ( str [ i ] == "(" || str [ i ] == "{" || str [ i ] == "[" )
40+ stack . push ( str [ i ] ) ;
41+ else if ( str [ i ] == ")" ) {
42+ if ( stack . pop ( ) != "(" ) {
43+ return false ;
44+ }
45+ }
46+ else if ( str [ i ] == "}" ) {
47+ if ( stack . pop ( ) != "{" ) {
48+ return false ;
49+ }
50+ }
51+ else if ( str [ i ] == "]" ) {
52+ if ( stack . pop ( ) != "[" ) {
53+ return false ;
54+ }
55+ }
56+ }
57+
58+ return ! stack . length ;
59+ }
60+
61+
62+ console . log ( validBraces ( '(){}[]' ) ) ; // => returns true
63+ console . log ( validBraces ( '(}' ) ) ; // => returns false
64+ console . log ( validBraces ( '[(])' ) ) ; // => returns false
65+ console . log ( validBraces ( '([{}])' ) ) ; // => returns true
66+ console . log ( validBraces ( '({[]})' ) ) ; // => returns true
67+
68+ // @SUPER
69+
70+ /*
71+ *
72+ * Напишите функцию которая будет принимать одно число и выводить сумму
73+ * всех натуральных чисел
74+ * sum(5) // 5+4+3+2+1
75+ *
76+ * Вычисления должны кешироваться, если в функцию попадает закешированное
77+ * значение, в консоле должно отобразиться
78+ * Значение взято из кэша
79+ *
80+ * Нельзя использовать внешние значения/переменные/функции
81+ *
82+ * */
83+
84+ function sum ( num ) {
85+ if ( num != 1 ) {
86+ return num + sum ( num - 1 )
87+ }
88+ return 1
89+ }
90+ console . log ( sum ( 5 ) ) ; // 15 Значение кешировано
91+ sum ( 5 ) ; // 15 Значение взято из кэш
92+
93+ sum ( 6 ) ; // 21 Кешировано
94+ sum ( 6 ) ; // 21 Значение взято из кэша
0 commit comments