diff options
1 files changed, 38 insertions, 25 deletions
| -rw-r--r-- | src/teaching/upp-2023/week9/index.du | 63 |
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 |