Summary Files Commits Branches @commit @diff @stats
path: root / src / teaching / upp-2023 / week9 / index.du
diff options
context:
space:
mode:
1 files changed, 38 insertions, 25 deletions
-rw-r--r--src/teaching/upp-2023/week9/index.du63
diff --git a/src/teaching/upp-2023/week9/index.du b/src/teaching/upp-2023/week9/index.du
index 9e93216..9c16c51 100644
--- a/src/teaching/upp-2023/week9/index.du
+++ b/src/teaching/upp-2023/week9/index.du
@@ -1,19 +1,23 @@
-# Задачи - УПП, Седмица 9, 01.12.2023
+'def title Задачи - УПП, Седмица 9, 01.12.2023
+'def desc Условия на задачите за упражнение
+
+# {title}
\n
-GitHub classroom: [url https://classroom.github.com/a/lGXxCRZO classroom.github.com/a/lGXxCRZO]
+GitHub classroom: {url classroom.github.com/a/lGXxCRZO;https://classroom.github.com/a/lGXxCRZO}
.warn Освен ако не е казано друго, може да зачитате, че максималната дължина на един низ е 1024 знака.
## Задача 1
Получавате от входа два низа.
-Трябва да изкарате на екрана низ, при който има знакът "\_" на индексите, където буквите между двата низа се различават, и съответната буква, когато не се различават.
+Трябва да изкарате на екрана низ, при който има знакът "_" на индексите, където буквите между двата низа се различават, и съответната буква, когато не се различават.
-[=Пример:=]
+{b Пример:}
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -27,6 +31,7 @@ AKDDCP
A__D__
+
## Задача 2
От входа получавате число N и на следващия ред получавате низ с толкова на брой знака.
@@ -35,9 +40,10 @@ A__D__
.important Трябва да използвате динамична памет
-[=Примери:=]
+{b Примери:}
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -60,14 +66,16 @@ ABCKLMN
KLMNABC
+
## Задача 3
От входа получаввате един низ, трябва да изкарате броя думи в него.
Думите се разделят с една или повече шпации, като знаци (точка, запетая, удивителна, ...) не са думи.
-[=Примери:=]
+{b Примери:}
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -90,13 +98,14 @@ This , is , a , sentence .!
|: 4
+
## Задача 4
Една от ранните програми за Apple I компютърът, написана от Steve Wozniak в упътването на компютъра, е така наречената "Woz Monitor", или wozmon за картко.
Тя позволява да погледнеш стойностите в клетки от паметта, да запишеш стойности и да стартираш програми.
Игнорирайки последната му възможност, нека да го имплементираме.
-За нашите цели, паметта на компютъра е просто един масив, които ще расте [=когато е нужно=].
+За нашите цели, паметта на компютъра е просто един масив, които ще расте {b когато е нужно}.
Ще адресираме (индексираме) стойностите от масива с числа от 16-тична бройна система.
Когато въведем низ във формата:
@@ -121,9 +130,10 @@ This , is , a , sentence .!
- "адрес: стойност ...", като предходното, обаче може да определим стойностите на сегашната и на следващите клетки (пак изкарваме във формата "X: V ...")
-[=Примери:=]
+{b Примери:}
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -176,6 +186,7 @@ This , is , a , sentence .!
9: ABB 8A 99 0
+
## Задача 5
Перфокартите са стар формат за съхраняване на текст (код) върху хартиен носител, който е четим от машини.
@@ -188,7 +199,7 @@ This , is , a , sentence .!
Трябва да имплементирате програма, която получава перфо карти в стандартния IBM формат: 12 реда и 80 колони и изкарва съответния ред, който е закодиран.
Тоест, от входа получавате 12 низа, всеки низ е с дължина 80, и са съставени от 0 и 1.\n
-Стойностите [=по колони=]:
+Стойностите {b по колони}:
.bulleted
- от "100000000000" до "000000000001" (със само една 1ца) съответстват на знаците "&", "-", "0", "1", ... "9".
@@ -196,9 +207,10 @@ This , is , a , sentence .!
- от "010100000000" до "010000000001" (с две 1ци, едната която е винаги втората) съответстват на знаците от "J" до "R".
- от "001100000000" до "001000000001" (с две 1ци, едната която е винаги третата) съответстват на знаците "/", "S", ... "Z".
-[=Пример:=]
+{b Пример:}
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -220,6 +232,7 @@ This , is , a , sentence .!
|: &-0123456789ABCDEFGHIJKLMNOPQR/STUVWXYZ
+
## Задача 6
Регулярните изрази са низове, които позволяват да опишем шаблони, с които да филтрираме/приемаме низове.
@@ -232,21 +245,21 @@ This , is , a , sentence .!
- ако не е някой от горните знаци, тогава искаме сегашната буква да бъде равна на тази в израза
:unordered
-1. Какво описва регулярният израз [`aa*bcd`]?
+1. Какво описва регулярният израз {` aa*bcd}?
.p
- Първата буква от нашия низ трябва да бъде [`а`].
- След това имаме [`a*`], след тази първа буква може да имаме 0 или повече [`a`]-та.
- Тоест втората буква може да бъде [`a`] или [`b`], ако е [`a`], третата буква може да бъде [`a`] или [`b`], обаче ако втората буква е [`b`], тогава продължаваме напред и останалите букви трябва да са [`bcd`].
+ Първата буква от нашия низ трябва да бъде {` а}.
+ След това имаме {` a*}, след тази първа буква може да имаме 0 или повече {` a}-та.
+ Тоест втората буква може да бъде {` a} или {` b}, ако е {` a}, третата буква може да бъде {` a} или {` b}, обаче ако втората буква е {` b}, тогава продължаваме напред и останалите букви трябва да са {` bcd}.
.p
- Тоест, този регулярен израз приема низове, които започват с [`a`], след това имат 0 или повече [`a`]-та и завършват на [`bcd`].
+ Тоест, този регулярен израз приема низове, които започват с {` a}, след това имат 0 или повече {` a}-та и завършват на {` bcd}.
Следните низове ще бъдат приети: "abcd", "aabcd", "aaabcd", "aaaabcd" и так. нат.
-2. Какво описва регулярният израз [`b*cd?`]?
+2. Какво описва регулярният израз {` b*cd?}?
.p
- В началото имаме [`b`] нула или повече пъти, след това имаме [`c`] и накрая имаме нула или едно [`d`].
+ В началото имаме {` b} нула или повече пъти, след това имаме {` c} и накрая имаме нула или едно {` d}.
Следните низове ще бъдат приети: "c", "bc", "bbc", "bbbc", ..., "cd", "bcd", "bbcd", ...
@@ -257,8 +270,8 @@ This , is , a , sentence .!
В противен случай изкарвате "No match".
Ако регулярния израз е в грешен формат (срещнете "?" или "\*" като първи знак), трябва да изкарате "Bad regex".
-[=Пример:=]
-[*Смесен вход/изход*]
+{b Пример:}
+{i Смесен вход/изход}
```
-'include ./ex6-io.txt
+'snippet 1 $ ./ex6-io.txt