diff options
| Commit | ac143884288299e251444b2d617f9275eafc8513 (patch) | |
|---|---|---|
| Author | 2025-12-14 22:00:34 +0200 | |
| Committer | 2025-12-14 22:00:34 +0200 | |
| Files | 4720e491c661f1080f35847c971b56b48ae27eca | |
| syndamia.com-ac143884288299e251444b2d617f9275eafc8513.tar syndamia.com-ac143884288299e251444b2d617f9275eafc8513.tar.gz syndamia.com-ac143884288299e251444b2d617f9275eafc8513.zip | ||
| Parent | 7d9808f9606b96ef23468dfa41055f2ff395c1af (diff) | |
feat(teaching/upp-2025/w11): Add solutions
2 files changed, 49 insertions, 10 deletions
| -rw-r--r-- | src/teaching/upp-2025/index.du | 1 | ||||
| -rw-r--r-- | src/teaching/upp-2025/week11/index.du | 58 |
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 анаграма] на втория, тоест дали втория низ може да се получи след някакво разместване на всички (латински) букви в първия низ. |