Skip to content

Commit 247445d

Browse files
committed
Add Lab 01 assignments
1 parent 2d127a1 commit 247445d

File tree

5 files changed

+95
-0
lines changed

5 files changed

+95
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
## Планински масив :mountain:
2+
3+
### Условие
4+
5+
Ще наричаме _планински_ даден масив от цели числа `array`, ако и само ако
6+
- има поне три елемента
7+
- съществува елемент на масива, за който е в сила, че
8+
- всички елементи до него (включително) образуват строго монотонно растяща редица числа
9+
- всички елементи от него (включително) до края на масива образуват строго монотонно намаляваща редица числа
10+
11+
Създайте публичен клас `ArrayAnalyzer` с метод
12+
13+
```java
14+
public static boolean isMountainArray(int[] array)
15+
```
16+
17+
който по даден масив `array` определя дали той е _планински_.
18+
19+
<img src="https://github.com/fmi/java-course/blob/master/01-intro-to-java/lecture/images/mountain-array.png" style="width: 50%; height: 50%" alt="Mountain array">
20+
21+
### Примери
22+
23+
| Извикване | Резултат |
24+
| :--------------------------------------- | :------- |
25+
| `isMountainArray(new int[]{2, 1})` | `false` |
26+
| `isMountainArray(new int[]{3, 5, 5})` | `false` |
27+
| `isMountainArray(new int[]{0, 3, 2, 1})` | `true` |
28+
29+
### :warning: Забележки
30+
31+
- Използването на структури от данни, различни от масив, **не е позволено**. Задачата трябва да се реши с помощта на знанията от първата лекция от курса.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
## Прогноза за времето :partly_sunny:
2+
3+
### Условие
4+
5+
В този сезон, лятото вече ни липсва и всеки се чуди, ще има ли скоро някой по-топъл ден.
6+
Разполагаме с прогнозата за следващите дни, под формата на масив от максималните дневни температури като цели числа. Интересуваме се, за всеки конкретен ден, колко дни трябва да чакаме до по-топъл ден. Ако не съществува такъв бъдещ ден, приемаме резултата за 0.
7+
8+
Създайте публичен клас `WeatherForecaster` с метод
9+
10+
```java
11+
public static int[] getsWarmerIn(int[] temperatures)
12+
```
13+
14+
който по даден масив с прогнозни температури `temperatures` връща масив, _i_-тият елемент на който е броят дни до първия следващ ден с по-висока максимална температура.
15+
16+
### Примери
17+
18+
| Извикване | Резултат |
19+
| :-------------------------------------------------- | :------------------------- |
20+
| `getsWarmerIn(new int[]{3, 4, 5, 1, -1, 2, 6, 3}))` | `[1, 1, 4, 2, 1, 1, 0, 0]` |
21+
| `getsWarmerIn(new int[]{3, 4, 5, 6}))` | `[1, 1, 1, 0]` |
22+
| `getsWarmerIn(new int[]{3, 6, 9}))` | `[1, 1, 0]` |
23+
24+
### :star: Side quest, или допълнително предизвикателство
25+
26+
Можете ли да решите задачата с алгоритъм с линейна сложност (O(N))?
27+
28+
### :warning: Забележки
29+
30+
- Използването на структури от данни, различни от масив, **не е позволено**. Задачата трябва да се реши с помощта на знанията от първата лекция от курса.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
## Каноничен директорен път :file_folder:
2+
3+
### Условие
4+
5+
В Unix-style операционните системи, точката `.` означава текущата директория, двете точки `..` реферират директорията на по-горното ниво, а произволна последователност от наклонени черти (например `//`) се третират като единична наклонена черта (`/`). Приемаме, че всяка друга формация от точки (например `...`) се третира като име на файл или директория.
6+
7+
_Каноничен_ наричаме директорен път,
8+
9+
- който започва с единична наклонена черта `/`
10+
- в който всеки две директории са разделени с единична наклонена черта `/`
11+
- който не завършва с `/`
12+
- който съдържа само директориите по пътя от корена до дадения файл или директория, т.е. не съдържа `.` или `..`
13+
14+
Създайте публичен клас `PathUtils` с метод
15+
16+
```java
17+
public static String getCanonicalPath(String path)
18+
```
19+
20+
който по даден път връща еквивалентния му _каноничен_ път.
21+
22+
### Примери
23+
24+
| Извикване | Резултат |
25+
| :------------------------------------ | :------------ |
26+
| `getCanonicalPath("/home/")` | `"/home"` |
27+
| `getCanonicalPath("/../")` | `"/"` |
28+
| `getCanonicalPath("/home//foo/")` | `"/home/foo"` |
29+
| `getCanonicalPath("/a/./b/../../c/")` | `"/c"` |
30+
31+
### :warning: Забележки
32+
33+
- Използването на структури от данни, различни от масив, **не е позволено**. Задачата трябва да се реши с помощта на знанията от първата лекция от курса. Това в частност изключва използването на каквито и да е API-та за работа с файловата система.

01-intro-to-java/lab/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Въведение в Java
Loading

0 commit comments

Comments
 (0)