diff options
1 files changed, 63 insertions, 31 deletions
| -rw-r--r-- | src/teaching/upp-2023/week11/index.du | 94 |
diff --git a/src/teaching/upp-2023/week11/index.du b/src/teaching/upp-2023/week11/index.du index b0f5be1..3750b01 100644 --- a/src/teaching/upp-2023/week11/index.du +++ b/src/teaching/upp-2023/week11/index.du @@ -1,30 +1,34 @@ -# Задачи - УПП, Седмица 11, 22.12.2023 +'def title Задачи - УПП, Седмица 11, 22.12.2023 +'def desc Условия на задачите за упражнение + +# {title} \n -GitHub classroom: [url https://classroom.github.com/a/cZRnZj9y classroom.github.com/a/cZRnZj9y] +GitHub classroom: {url classroom.github.com/a/cZRnZj9y;https://classroom.github.com/a/cZRnZj9y} -.important Във всички задачи [=трябва=] да използвате рекурсия! +.important Във всички задачи {b трябва} да използвате рекурсия! .warn Някои задачи се повтарят с тези от миналия път, ако преди не сте ги решили, сега ги решете ## Алтернативни задачи -Считайте [url https://github.com/ivanahristova/introduction-to-programming-2023-2024/tree/main/sem11#%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8 задачите от семинара] като задачи преди тези. +Считайте {url задачите от семинара;https://github.com/ivanahristova/introduction-to-programming-2023-2024/tree/main/sem11#%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8} като задачи преди тези. Тоест, за хората които се затрудняват повечко, решете семинарните и след това се върнете тук. Разбира се, ще помагам и със семинарните задачи. ## Задача 1 -От входа получавате неотрицателно число [`N`], което ще бъде някое число на Фибоначи. +От входа получавате неотрицателно число {` N}, което ще бъде някое число на Фибоначи. Трябва да върнете кое по ред е, като 0 е нулевото, 1 е първото, 2 е третото, 3 е четвъртото и так. нат. Напомням, че нормално Фибоначи се дефинира като редица, която започва с числата 0 и 1, и всяко следващо е сумата на предходните две. -Тоест, нулевото число е 0, първото 1, второто е [`0 + 1 = 1`] (понеже 1 се повтаря, зачитаме го за първото число), третото е [`1 + 1 = 2`], четвъртото е [`1 + 2 = 3`] и так. нат. +Тоест, нулевото число е 0, първото 1, второто е {` 0 + 1 = 1} (понеже 1 се повтаря, зачитаме го за първото число), третото е {` 1 + 1 = 2}, четвъртото е {` 1 + 2 = 3} и так. нат. -[=Примери:=] +{b Примери:} -:table_2 +:table +:2 |= Вход |= Изход @@ -47,17 +51,19 @@ GitHub classroom: [url https://classroom.github.com/a/cZRnZj9y classroom.github. |: 24 + ## Задача 2 -От входа получавате положително число [`N`], трябва да изкарате на екрана "рисунка" на триъгълници. +От входа получавате положително число {` N}, трябва да изкарате на екрана "рисунка" на триъгълници. ### a) горен триъгълник -Рисунката е един правоъгълен равнобедрен триъгълник от знака [`+`], като [`N`] определя размера на равнобедрените страни (вижте примерите). +Рисунката е един правоъгълен равнобедрен триъгълник от знака {` +}, като {` N} определя размера на равнобедрените страни (вижте примерите). -[=Примери:=] +{b Примери:} -:table_2 +:table +:2 |= Вход |= Изход @@ -87,82 +93,101 @@ GitHub classroom: [url https://classroom.github.com/a/cZRnZj9y classroom.github. +++++ + ### б) долен триъгълник -Подобно на предходната подточка, обаче обърнат по хоризонтала, и със знака [`#`]. +Подобно на предходната подточка, обаче обърнат по хоризонтала, и със знака {` #}. -[=Примери:=] +{b Примери:} -:table_2 +:table +:2 |= Вход |= Изход |: 1 |: ``` +'emplace # +'endemplace |: 2 |: ``` +'emplace ## # +'endemplace |: 3 |: ``` +'emplace ### ## # +'endemplace |: 5 |: ``` +'emplace ##### #### ### ## # +'endemplace + ### в) пълен триъгълник -[=Използвайки само една рекурсивна функция,=] сега трябва да изкарате първо горния триъгълник и след това долния. +{b Използвайки само една рекурсивна функция,} сега трябва да изкарате първо горния триъгълник и след това долния. Ако просто извикате предходните две функции една след друга, задачата се обезсмисля. -[=Примери:=] +{b Примери:} -:table_2 +:table +:2 |= Вход |= Изход |: 1 |: ``` +'emplace + # +'endemplace |: 2 |: ``` +'emplace + ++ ## # +'endemplace |: 3 |: ``` +'emplace + ++ +++ ### ## # +'endemplace |: 5 |: ``` +'emplace + ++ +++ @@ -173,11 +198,13 @@ GitHub classroom: [url https://classroom.github.com/a/cZRnZj9y classroom.github. ### ## # +'endemplace + ## Задача 3 -Направете програма която разрешава проблема с [url https://en.wikipedia.org/wiki/Ages_of_Three_Children_puzzle възрастта на трите деца]. +Направете програма която разрешава проблема с {url възрастта на трите деца;https://en.wikipedia.org/wiki/Ages_of_Three_Children_puzzle}. Една жена има три деца за които знаем три неща: умножението на техните възрасти, сбора на техните възрасти и факта, че има едно дете, което е най-голямо. Трябва да намерите възрастта на всяко дете, само по тази информация. @@ -185,11 +212,12 @@ GitHub classroom: [url https://classroom.github.com/a/cZRnZj9y classroom.github. Разбира се, от входа получавате две числа, съответно умножението и сбора на възрастите им. Трябва на екрана да изкарате три числа - възрастите на трите деца. -[=Подсказка:=] най-лесното решение е да пробвате всички възможни възрасти, като избягвате техни пермутации +{b Подсказка:} най-лесното решение е да пробвате всички възможни възрасти, като избягвате техни пермутации -[=Примери:=] +{b Примери:} -:table_2 +:table +:2 |= Вход |= Изход @@ -203,14 +231,16 @@ GitHub classroom: [url https://classroom.github.com/a/cZRnZj9y classroom.github. |: 2 5 35 + ## Задача 4 -От входа получавате число [`N`], след това трябва да изкарате на нови редове, в нарастващ ред, всички двоични числа, които могат да се представят с [`N`]-бита. -Вкарвате и водещи нули, тоест всяко число е съставено от точно [`N`] букви ([`N`] нули и единици). +От входа получавате число {` N}, след това трябва да изкарате на нови редове, в нарастващ ред, всички двоични числа, които могат да се представят с {` N}-бита. +Вкарвате и водещи нули, тоест всяко число е съставено от точно {` N} букви ({` N} нули и единици). -[=Примери:=] +{b Примери:} -:table_2 +:table +:2 |= Вход |= Изход @@ -245,28 +275,30 @@ GitHub classroom: [url https://classroom.github.com/a/cZRnZj9y classroom.github. ``` 0000 0001 -[*...*] +{i ...} 0111 1000 1001 -[*...*] +{i ...} 1101 1110 1111 + ## Задача 5 -Направете програма която разрешава [url https://en.wikipedia.org/wiki/Takuzu Такузо пъзели]. +Направете програма която разрешава {url Такузо пъзели;https://en.wikipedia.org/wiki/Takuzu}. Започвате с дъска 4х4, в тази дъска може да имате само цифрите 0 и 1, като няколко клетки вече идват с попълнени стойности (но повечето са празни). Обаче, на всяка колона и ред трябва да има еднакъв брой 0ли и 1ци, и не трябва да има повече от две последователни еднакви цифри (в реда или колоната). От входа получавате дъската, като с -1 обозначаваме празна клетка. -[=Примери:=] +{b Примери:} -:table_2 +:table +:2 |= Вход |= Изход |