Skip to content

Commit 5aad908

Browse files
authored
Merge pull request #2 from HackBulgaria/add-application-task
Add application tasks
2 parents c5efa43 + 1d3a29f commit 5aad908

10 files changed

Lines changed: 178 additions & 0 deletions

File tree

Application/1.Sensors/README.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Сензори за мръсен въздух
2+
3+
Имате компания, която мери нивата на лош въздух в София. Имате сензори в целия град. Понякога сензорите се чупят или започват да дават неверни резултати. Поради тази причина на повечето места сте сложили повече от 1 сензор.
4+
5+
Можете да разберете дали даден сензор е в неизправност, ако има много голяма разлика между неговата стойност и стойностите на сензорите, които са му "съседни".
6+
7+
## Съседни сензори
8+
9+
Търсим съседните сензори на (5, 8 ) в радиус от 2 километра. Спрямо схемата на картинката това е само сензор (7,8)
10+
11+
![](distance2.png)
12+
13+
Ако обаче търсим съседните сензори на сензор (5, 8 ) с радиус 3, получаваме сензори (7, 8), (8, 8), (7, 7), (3, 6) и (5, 5)
14+
15+
![](distance3.png)
16+
17+
## Задачата
18+
19+
Информацията за сензорите се намира във файл ([тук](sensors_data1.txt) има примерен). Всеки ред във файла репрезентира един сензор с неговите координати и нивото на мръсен въздух, който е измерил.
20+
21+
На избран от вас език, напишете програма, която чете от файл и изкарва всички възможни неизправни сензори. Името на файла, максималната дистанция, която дефинира близки сензори и максималната позволена грешка между сензорите се получават от стандартния вход.
22+
23+
Формат на файла:
24+
25+
```
26+
3,4,100
27+
3,3,100
28+
4,3,20
29+
10,9,200
30+
9,9,180
31+
7,6,50
32+
7,5,300
33+
1,1,100
34+
```
35+
36+
Всеки ред от файла репрезентира 1 сензор. Първите 2 колони са координатите на сензорите (X,Y), а в последната се намира стойността на сензора за мръсен въздух.
37+
38+
> Ако няма проблемни сензори, изведете: "All sensors are OK."
39+
40+
## Пример
41+
42+
Input:
43+
44+
```
45+
Filename: sensors_data.txt
46+
Neighbours distance: 1
47+
Max error: 50
48+
```
49+
50+
Output:
51+
52+
```
53+
Please check sensors at: (3,5), (3,6)
54+
```
129 KB
Loading
139 KB
Loading
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
1,1,100
2+
1,2,100
3+
5,5,20
4+
4,4,80
5+
3,3,10
6+
3,5,0
7+
3,6,200
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
## Правилни скоби
2+
3+
Дефинираме "Правилни скоби" по следния начин:
4+
5+
Правилни скоби са:
6+
7+
а) `()` - лява скоба `(` до дясна скоба `)`
8+
9+
б) `(< правилни скоби >)` - лява скоба `(` до правилни скоби, до дясна скоба `)`
10+
11+
в) `< правилни скоби >< правилни скоби >` - правилни скоби до правилни скоби
12+
13+
## Задача
14+
15+
На избран от вас език, напишете програма, която чете от стандартния вход подаден низ и връща дали този низ е "Правилни скоби."
16+
17+
## Пример 1
18+
19+
Input:
20+
```
21+
()(())
22+
```
23+
Output:
24+
```
25+
True
26+
```
27+
28+
### Описание
29+
30+
Това са правилни скоби защото:
31+
1. Спрямо дефиниция `в)`, разделяме въведеният израз `()(())` на две части: `()` и `(())`. Това означава, че ако първата и втората част са "правилни скоби" - то и целия израз е "правилни скоби"
32+
2. Спрямо дефиниция `a)` разглеждаме първият израз от разделените в точка 1. Изразът `()` е вярно, че е "правилни скоби" спрямо дефиниция `a)`.
33+
3. Спрямо дефиниция `б)` разгеждаме втората част от изразът от точка 1. Изразът `(())` е възможно да отговаря на `б)` защото започва с лява скоба `(` и завършва на дясна скоба `)`. Тоест ако изразът между първата и последната скоба (именно този "()"), отговаря на дефиницията на "правилни скоби" - то и целия израз отговаря на дефиницията на "правилни скоби".
34+
4. Спрямо дефиниция `a)` разглеждаме последната отделена част в точка 3. Изразът `()` отговаря на `a)` от дефиницията на "правилни скоби", тоест - И изразът в точка 3 също отговаря на дефиницията.
35+
36+
С горните съображения можем да кажем, че въведеният израз "()(())" отговаря на дефиницията на "правилни скоби"
37+
38+
## Пример 2
39+
40+
Input:
41+
```
42+
()))
43+
```
44+
Output:
45+
```
46+
False
47+
```
48+
49+
### Описание
50+
51+
1. Разглеждаме изразът `()))` спрямо дефиниция `б)`, защото започва с лява скоба и завършва на дясна скоба. Това означава, че ако изразът между първата и последната скоба, отговаря на дефиницията на "правилни скоби", то целият израз отговаря.
52+
2. Разглеждаме изразът `))` останал от точка 1. Той не отговаря на нито една от дефинициите `а)` `б)` или `в)`. Това означава, че все още не сме доказали, дали изразът е "правилни скоби".
53+
3. Разглеждаме изразът `()))` спрямо дефиниция `в)` - това означава, че го разделяме на 2 части. Ако лявата част и дясната част са "правилни скоби", то и целият израз е "правилни скоби"
54+
4. Разглеждаме лявата част от точка 3 `()` спрямо дефинициите и виждаме, че отговаря на дефиниция `a)`
55+
5. Разглеждаме дясната част от точка 3 `))` тя не отговаря на нито една от дефинициите `a)`, `б)` или `в)`. Следователно целият израз не е "правилни скоби" спрямо дефиниция `в)`
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
## Гниещи ябълки
2+
3+
В къщата, в която живеете, имате огромно ябълково дърво. Дървото е родило за поредна година и вие събирате реколтата от ябълки в касетки с различна големина. Налага ви се да заминете извън града за няколко дни малко след като сте събрали реколтата.
4+
5+
## Задачата
6+
7+
Знаете, че ако една ябълка е изгнила, след 3 дни всички ябълки около нея ще са изгнили.
8+
9+
На избран от вас език, напишете програма, коят от стандарния вход чете:
10+
11+
- големината на касетката - N x M
12+
- координатите на изгнилите ябълки
13+
- след колко дни ще се върнете в къщата си
14+
15+
Изведете как изглежда касетката след този период.
16+
17+
- O - свежа ябълка
18+
- X - изгнила ябълка
19+
20+
## Пример
21+
22+
- :green-apple: - свежа ябълка
23+
- :apple: - изгнила ябълка
24+
25+
В началото:
26+
27+
![](day0.jpg)
28+
29+
След 3 дни:
30+
31+
![](day3.jpg)
32+
33+
След 7 дни:
34+
35+
![](day7.jpg)
36+
37+
След 100 дни:
38+
39+
![](day100.jpg)
40+
41+
## Примерен I/O
42+
43+
Входни данни:
44+
45+
```
46+
Enter the size of the box: 20x8
47+
Еnter the coordinates of the rotten apples: (7,4) (15,3)
48+
After how many days will you come back: 10
49+
```
50+
51+
Изход:
52+
53+
```
54+
OOOOOOOOOOOXXXXXXXOO
55+
OOOOOOOOOOOXXXXXXXOO
56+
OOOOOOOOOOOXXXXXXXOO
57+
XXXXXXXOOOOXXXXXXXOO
58+
XXXXXXXOOOOXXXXXXXOO
59+
XXXXXXXOOOOXXXXXXXOO
60+
XXXXXXXOOOOOOOOOOOOO
61+
XXXXXXXOOOOOOOOOOOOO
62+
```
130 KB
Loading
147 KB
Loading
132 KB
Loading
137 KB
Loading

0 commit comments

Comments
 (0)