Summary Files Commits Branches @commit @diff @stats
path: root / src / teaching / upp-2023 / week10 / index.du
diff options
context:
space:
mode:
1 files changed, 48 insertions, 26 deletions
-rw-r--r--src/teaching/upp-2023/week10/index.du74
diff --git a/src/teaching/upp-2023/week10/index.du b/src/teaching/upp-2023/week10/index.du
index 746cacd..6a4bbe1 100644
--- a/src/teaching/upp-2023/week10/index.du
+++ b/src/teaching/upp-2023/week10/index.du
@@ -1,21 +1,25 @@
-# Задачи - УПП, Седмица 10, 15.12.2023
+'def title Задачи - УПП, Седмица 10, 15.12.2023
+'def desc Условия на задачите за упражнение
+
+# {title}
\n
-GitHub classroom: [url https://classroom.github.com/a/EJcTQRz4 classroom.github.com/a/EJcTQRz4]
+GitHub classroom: {url classroom.github.com/a/EJcTQRz4;https://classroom.github.com/a/EJcTQRz4}
-.important Във всички задачи [=трябва=] да използвате рекурсия!
+.important Във всички задачи {b трябва} да използвате рекурсия!
## Задача 1
-Най-големия общ делител на числата [`a`] и [`b`] е най-голямото, число което ги дели без остатък.
-Евклидовият алгоритъм се базира на факта, че за две положителни числа [`a`] и [`b`], като [`a > b`], НОД на [`a`] и [`b`] е същия като НОД на [`a - b`] и [`b`] и когато [`a = b`], тогава НОД на [`a`] и [`b`] е тяхната стойност.
+Най-големия общ делител на числата {` a} и {` b} е най-голямото, число което ги дели без остатък.
+Евклидовият алгоритъм се базира на факта, че за две положителни числа {` a} и {` b}, като {` a > b}, НОД на {` a} и {` b} е същия като НОД на {` a - b} и {` b} и когато {` a = b}, тогава НОД на {` a} и {` b} е тяхната стойност.
-От входа получавате две цели положителни числа и трябва да изкарате техния НОД, чрез алгоритъма на Евклид [=имплементиран с рекурсия=].
+От входа получавате две цели положителни числа и трябва да изкарате техния НОД, чрез алгоритъма на Евклид {b имплементиран с рекурсия}.
-[=Примери:=]
+{b Примери:}
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -26,13 +30,15 @@ GitHub classroom: [url https://classroom.github.com/a/EJcTQRz4 classroom.github.
|: 6
+
## Задача 2
-От входа получавате неотрицателно число [`N`], което ще бъде някое число на Фибоначи.
+От входа получавате неотрицателно число {` N}, което ще бъде някое число на Фибоначи.
Трябва да върнете кое по ред е, като 0 е нулевото, 1 е първото, 2 е третото, 3 е четвъртото и так. нат.
Напомням, че математически фибоначи се дефинира така:
.comment
+'emplace
\begin{align*}
F_n = \left\{ \begin{array}{ll}
0, & n=0 \\
@@ -40,12 +46,14 @@ F_n = \left\{ \begin{array}{ll}
F_{n-1} + F_{n-2} & \text{иначе} \\
\end{array} \right.
\end{align*}
+'endemplace
-[image ./img/fib.png F(0) = 0; F(1) = 1; F(n) = F(n-1) + F(n-2)]
+{img F(0) = 0\; F(1) = 1\; F(n) = F(n-1) + F(n-2);./img/fib.png}
-[=Примери:=]
+{b Примери:}
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -68,43 +76,52 @@ F_{n-1} + F_{n-2} & \text{иначе} \\
|: 24
+
## Задача 3
-От входа получавате положително число [`N`], трябва да изкарате на екрана "рисунка", показваща формата на пясъчен часовник с височина [`2N`] (вижте примерите).
+От входа получавате положително число {` N}, трябва да изкарате на екрана "рисунка", показваща формата на пясъчен часовник с височина {` 2N} (вижте примерите).
-[=Примери:=]
+{b Примери:}
-:table_2
+:table
+:2
|= Вход
|= Изход
|: 1
|:
```
+'emplace
+
#
+'endemplace
|: 2
|:
```
+'emplace
+++
+
#
###
+'endemplace
|: 3
|:
```
+'emplace
+++++
+++
+
#
###
#####
+'endemplace
|: 5
|:
```
+'emplace
+++++++++
+++++++
+++++
@@ -115,16 +132,19 @@ F_{n-1} + F_{n-2} & \text{иначе} \\
#####
#######
#########
+'endemplace
+
## Задача 4
-От входа получавате число [`N`], след това тябва да изкарате на нови редове, в нарастващ ред, всички двоични числа, които могат да се представят с [`N`]-бита.
-Вкарвате и водещи нули, тоест всяко число е съставено от точно [`N`] букви ([`N`] нули и единици).
+От входа получавате число {` N}, след това тябва да изкарате на нови редове, в нарастващ ред, всички двоични числа, които могат да се представят с {` N}-бита.
+Вкарвате и водещи нули, тоест всяко число е съставено от точно {` N} букви ({` N} нули и единици).
-[=Примери:=]
+{b Примери:}
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -159,26 +179,28 @@ F_{n-1} + F_{n-2} & \text{иначе} \\
```
0000
0001
-[*...*]
+{i ...}
0111
1000
1001
-[*...*]
+{i ...}
1101
1110
1111
+
## Задача 5
-Получавате един ред от терминала, в който ще имате скоби, знакът [`+`] и [`*`], шпации и числа.
-Това е прост математически израз, трябва да изкарате резултата след неговото пресмятане, като винаги около [`число + число`] и [`число * число`] има скоби (тоест не е нужно да се притеснявате от приоритет и асоциативност).
+Получавате един ред от терминала, в който ще имате скоби, знакът {` +} и {` *}, шпации и числа.
+Това е прост математически израз, трябва да изкарате резултата след неговото пресмятане, като винаги около {` число + число} и {` число * число} има скоби (тоест не е нужно да се притеснявате от приоритет и асоциативност).
-За удобство спокойно може да ползвате [`atoi`] за конверитране на числовите части от низа в числа.
+За удобство спокойно може да ползвате {` atoi} за конверитране на числовите части от низа в числа.
-[=Примери:=]
+{b Примери:}
-:table_2
+:table
+:2
|= Вход
|= Изход