Summary Files Commits Branches @commit @diff @stats
path: root / src
diff options
context:
space:
mode:
Commitac143884288299e251444b2d617f9275eafc8513 (patch)
Author
 Syndamia <kamen@syndamia.com>
2025-12-14 22:00:34 +0200
Committer
 Syndamia <kamen@syndamia.com>
2025-12-14 22:00:34 +0200
Files4720e491c661f1080f35847c971b56b48ae27eca /src
syndamia.com-ac143884288299e251444b2d617f9275eafc8513.tar
syndamia.com-ac143884288299e251444b2d617f9275eafc8513.tar.gz
syndamia.com-ac143884288299e251444b2d617f9275eafc8513.zip
Parent7d9808f9606b96ef23468dfa41055f2ff395c1af (diff)
feat(teaching/upp-2025/w11): Add solutions
2 files changed, 49 insertions, 10 deletions
-rw-r--r--src/teaching/upp-2025/index.du1
-rw-r--r--src/teaching/upp-2025/week11/index.du58
diff --git a/src/teaching/upp-2025/index.du b/src/teaching/upp-2025/index.du
index 3014d73..c7f9ce2 100644
--- a/src/teaching/upp-2025/index.du
+++ b/src/teaching/upp-2025/index.du
@@ -152,4 +152,5 @@
|:
|:
[url ./week11 Задачи]
+|| [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week11 Решения]
|| [url https://classroom.github.com/a/z_C3UMi8 GitHub Classroom]
diff --git a/src/teaching/upp-2025/week11/index.du b/src/teaching/upp-2025/week11/index.du
index 0cbb10a..17bbd52 100644
--- a/src/teaching/upp-2025/week11/index.du
+++ b/src/teaching/upp-2025/week11/index.du
@@ -2,7 +2,7 @@
'define expected-reading 7 min
'define created 10 December 2025
-'define edited 10 December 2025
+'define edited 14 December 2025
[$pagenav]
:question
@@ -24,6 +24,8 @@ GitHub Classroom: [url https://classroom.github.com/a/z_C3UMi8]
### Задача 1
+.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week11/Exercise01.cpp Решение]
+
От входа получавате 20 буквен низ: име.
Трябва да изкарате съобщението "Hello *[[име]]*!"
@@ -40,6 +42,8 @@ GitHub Classroom: [url https://classroom.github.com/a/z_C3UMi8]
### Задача 2
+.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week11/Exercise02.cpp Решение]
+
От входа получавате изречение: низ, завършващ на точка.
Трябва да изкарате броя букви (малки или големи) в изречението.
@@ -56,28 +60,36 @@ GitHub Classroom: [url https://classroom.github.com/a/z_C3UMi8]
### Задача 3
+.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week11/Exercise03.cpp Решение]
+
От входа получавате изречение: низ, завършващ на точка.
Трябва да изкарате броя полета в низа.
Поле наричаме всяка последователност от букви, която не съдържа знака шпация.
+Изключвайте крайната точка в бройката на полетата.
+
+.note
+*[(14.12.2025)]* Добавени точки в края на изреченията.
:table_2
|= Вход
|= Изход
-|: `[first second third fourth]`
+|: `[first second third fourth.]`
|: 4
-|: `[I'm glad you're here!]`
+|: `[I'm glad you're here.]`
|: 4
-|: `[ a b c d 8 k * * ]`
+|: `[ a b c d 8 k * * .]`
|: 8
### Задача 4
+.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week11/Exercise04.cpp Решение]
+
От входа получавате текст, докато не срещнете първия празен ред.
Трябва да изкарате броя редове в текста.
@@ -89,7 +101,7 @@ GitHub Classroom: [url https://classroom.github.com/a/z_C3UMi8]
```
First line
Second line
-Third line
+Third line\n
|: 3
@@ -98,13 +110,15 @@ Third line
Day had broken cold and grey, exceedingly cold and grey,
when the man turned aside from the main Yukon trail and
climbed the high earth-bank, where a dim and little-travelled
-trail led eastward through the fat spruce timberland.
+trail led eastward through the fat spruce timberland.\n
|: 4
### Задача 5
+.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week11/Exercise05.cpp Решение]
+
От входа получавате низ, завършващ на двоеточие и след това две реални числа.
За всяко срещане на думата "sum" в низа, трябва да изкарате сумата на числата, и за всяко срещане на "sub" в низа, трябва да изкарате разликата на числата.
@@ -127,6 +141,8 @@ trail led eastward through the fat spruce timberland.
### Задача 6
+.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week11/Exercise06.cpp Решение]
+
От входа получавате ред, обозначаващ число в 16-тича бройна система.
Тоест, реда започва с `[0x]` и останалото са 16-тични цифри.
@@ -166,6 +182,8 @@ trail led eastward through the fat spruce timberland.
### Задача 7
+.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week11/Exercise07.cpp Решение]
+
От входа получавате 5 буквен низ и след това един ред текст.
Трябва да изкарате всички срещания на първия низ във втория (като препокривания са позволени).
@@ -190,6 +208,8 @@ aaaaaaaaaaaaaaaaaaaa
### Задача 8
+.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week11/Exercise08.cpp Решение]
+
От входа получавате букви, докато не срещнете низа "end".
Трябва да изкарате всички полета в обратен ред.
@@ -208,6 +228,8 @@ aaaaaaaaaaaaaaaaaaaa
### Задача 9
+.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week11/Exercise09.cpp Решение]
+
От входа получавате две полета, съставени от главни и малки латински букви.
Трябва да върнете общата бройка срещания на всяка буква от второто поле в първото.
@@ -226,6 +248,8 @@ aaaaaaaaaaaaaaaaaaaa
### Задача 10
+.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week11/Exercise10.cpp Решение]
+
От входа получавате ред с текст.
Трябва да върнете дали е [url https://bg.wikipedia.org/wiki/%D0%9F%D0%B0%D0%BD%D0%B3%D1%80%D0%B0%D0%BC%D0%B0 панграма] на латинската азбука: дали всяка буква се среща поне веднъж (без значение дали е главна или малка).
@@ -245,6 +269,8 @@ aaaaaaaaaaaaaaaaaaaa
### Задача 11
+.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week11/Exercise11.cpp Решение]
+
От входа получавате два реда.
Трябва да премахнете всяко срещане на втория ред в първия и да изкарате резултата.
@@ -273,6 +299,8 @@ Buffalo Buffalo Buffalo
### Задача 12
+.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week11/Exercise12.cpp Решение]
+
От входа получавате ред с текст.
Зачитайки го за парола, трябва да върнете колко силна е паролата.
@@ -286,18 +314,21 @@ Buffalo Buffalo Buffalo
Накрая тряба да върнете оценката на паролата.
+.note
+*[(14.12.2025)]* Оправени оценки в примерите
+
:table_2
|= Вход
|= Изход
|: hi
-|: 1
+|: 2
|: aa
-|: 0
+|: 1
|: Hello@World15
-|: 4
+|: 3
|: Ny$wtgYH62uTy@d
|: 5
@@ -305,6 +336,8 @@ Buffalo Buffalo Buffalo
### Задача 13
+.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week11/Exercise13.cpp Решение]
+
Хешираща функция е функция, която превръща низ в число.
Една много често използвана е функцията на [url https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function Fowler-Noll-Vo].
@@ -318,6 +351,9 @@ Buffalo Buffalo Buffalo
Използвайки 32-битовите offset basis (2166136261) и FNV простото число (16777619), изкарайте хешираната стойност на подадения ред текст.
+.note
+*[(14.12.2025)]* Поправен хеш на последния пример.
+
:table_2
|= Вход
|= Изход
@@ -332,11 +368,13 @@ Buffalo Buffalo Buffalo
|: 84696382
|: `[The most effective debugging tool is still careful thought, coupled with judiciously placed print statements.]`
-|: 2174003109
+|: 2408366471
### Задача 14
+.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week11/Exercise14.cpp Решение]
+
От входа получавате два реда с текст.
Трябва да върнете дали първия ред е [url https://en.wikipedia.org/wiki/Anagram анаграма] на втория,
тоест дали втория низ може да се получи след някакво разместване на всички (латински) букви в първия низ.