-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
113 lines (103 loc) · 3.86 KB
/
Copy pathmain.js
File metadata and controls
113 lines (103 loc) · 3.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/* EASY
Алгоритмы !
TASK 0
Вам дано предложение, верните массив из слов,
которые длинее чем средняя длина всех слов.
Слова разделены пробелами, если в предложении запятые,они должны быть пропущены
solution(["This is a sample string"]) expected ["This" "sample" "string"]
solution(["Some another sample"]) expected ["another" "sample"]
solution(["Do, do, do, do... do it!"]) expected []
*/
function solution(sentence){
// regex is copypasta
let sentenceNoCommas = sentence.replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/gmi,'');
console.log(sentence);
let sentenceArray = sentenceNoCommas.split(' ');
sentenceArray = sentenceArray.filter( value => value !== '');
let wordsLength = sentenceArray.reduce( (acc,value) => {
return acc + value.length;
},0);
let avgWordLength = wordsLength/sentenceArray.length;
console.log('sentence:', sentence);
console.log('avgWordLength',avgWordLength);
// sentenceArray = sentenceArray.map( value => {
// });
return sentenceArray.filter( value => value.length > avgWordLength);
}
console.log(solution("This, ,is, a, sample , string"));
console.log('-----------------');
console.log(solution("Some another sample"));
console.log('-----------------');
console.log(solution("Do, do, do, do... do it!"));
/*
Подготовка к занятию в пятницу.
Windows:
Установите все node.js скачать отсюда -> https://nodejs.org/en/
Скачайте последнюю 10.x.x версию
Для проверки установки в консоле введите "node -v" (без кавычек) отобразит версию node.js
Linux:
sudo apt install npm // установить менеджер пакетов npm
npm i -g n // установить пакет для установки node.js
sudo n latest // установить последнюю версию node.js
*/
/* TASK 1
Сделайте таблицу 5x5
При клике на элемент, изменяйте цвет у элемента на красный.
Но цвет у элемента должен изменяться пропорционально в другой половине квадрата
Пример 3х3:
[]|[]|[]
[]|[]|[]
[]|[]|[]
кликаем сюда -> []|[]|[]
[]|[]|[]
[]|[]|[x] <- загорается тут
[]|[]|[]
кликаем сюда -> []|[]|[x] <- загорается тут
[]|[]|[x]
*/
const table = document.getElementsByTagName('table')[0];
let getClickedPosition = function(td){
let position = {
x:1,
y:1
}
let xElement = td;
while(xElement.previousElementSibling){
position.x++;
xElement = xElement.previousElementSibling
}
let yElement = td.parentElement;
while(yElement.previousElementSibling){
position.y++;
yElement = yElement.previousElementSibling
}
return position;
}
let reversePosition = function(clickedPosition){
return {
x: (6 - clickedPosition.x),
y: (6 - clickedPosition.y)
}
}
let findTdAtPosition = function(position){
let tr = table.children[0].children[position.y - 1];
let td = tr.children[position.x - 1];
return td;
}
table.addEventListener('click', (event) =>{
if(event.target.nodeName === 'TD'){
let clickedPosition = getClickedPosition(event.target);
let needFirePosition = reversePosition(clickedPosition);
let toFireTd = findTdAtPosition(needFirePosition);
toFireTd.classList.toggle('selected');
}else{
console.error('Not a TD element');
}
});
// @SUPER-FrontEnd
/*
У вас есть 3 блока смотри events.html
при mousedown и движении мышки нужно сделать
ресайз одного блока.
Подсказка - событие необходимо повесить на доп. элемент .resize
*/