diff options
1 files changed, 41 insertions, 27 deletions
| -rw-r--r-- | src/teaching/upp-2023/week8/index.du | 68 |
diff --git a/src/teaching/upp-2023/week8/index.du b/src/teaching/upp-2023/week8/index.du index 16a92c9..08318b6 100644 --- a/src/teaching/upp-2023/week8/index.du +++ b/src/teaching/upp-2023/week8/index.du @@ -1,10 +1,13 @@ -# Задачи - УПП, Седмица 8, 24.11.2023 +'def title Задачи - УПП, Седмица 8, 24.11.2023 +'def desc Условия на задачите за упражнение + +# {title} \n -GitHub classroom: [url https://classroom.github.com/a/Big7FRUG classroom.github.com/a/Big7FRUG] +GitHub classroom: {url classroom.github.com/a/Big7FRUG;https://classroom.github.com/a/Big7FRUG} -.warn [=Трябва=] да използвате възможно най-малко памет във всички задачи! +.warn {b Трябва} да използвате възможно най-малко памет във всички задачи! ## Задача 1 @@ -15,9 +18,10 @@ GitHub classroom: [url https://classroom.github.com/a/Big7FRUG classroom.github. Броим позициите на числата от 1, тоест в "8 5 9 7", 8 е на позиция 1, 5 е на позиция 2, 9 е на позиция 3 и 7 е на позиция 4. "Всяко второ число" са числата 5 и 7, докато "всяко трето" е само числото 9. -[=Пример:=] +{b Пример:} -:table_2 +:table +:2 |= Вход |= Изход @@ -32,6 +36,7 @@ GitHub classroom: [url https://classroom.github.com/a/Big7FRUG classroom.github. 2 54 + ## Задача 2 Получавате и запазвате цели числа, докато не получите числото 0. @@ -43,9 +48,10 @@ GitHub classroom: [url https://classroom.github.com/a/Big7FRUG classroom.github. След ротацията трябва да изкарате числата на екрана. -[=Примери:=] +{b Примери:} -:table_2 +:table +:2 |= Вход |= Изход @@ -59,14 +65,16 @@ GitHub classroom: [url https://classroom.github.com/a/Big7FRUG classroom.github. |: 983 473 103 1 4 + ## Задача 3 Получавате цяло положително число N и след това получавате всички коефициенти в матрица NxN. Трябва да изкарате редицата числа, получена чрез умножаване на първия ред по всяка колона от същата матрица. -[=Примери:=] +{b Примери:} -:table_2 +:table +:2 |= Вход |= Изход @@ -100,9 +108,10 @@ GitHub classroom: [url https://classroom.github.com/a/Big7FRUG classroom.github. Накрая трябва да изкарате получената редица стойности. При изкарване трябва да пропуснете незапълнени клетки. -[=Примери:=] +{b Примери:} -:table_2 +:table +:2 |= Вход |= Изход @@ -116,11 +125,12 @@ GitHub classroom: [url https://classroom.github.com/a/Big7FRUG classroom.github. |: 96 56 96 90 33 15 43 73 17 + ## Задача 5 Получавате цели числа от входа, докато не получите числото 0. Представете си една права "по средата" на масива, вмъквате първото число в ляво от правата, второто в дясно, после пак в ляво и четвъртото в дясно и так. нат. -Пример: ако са въведени числата "1 2 3 4", и си представяме правата [`|`], при първото число правим [`1|`], при второто [`1|2`], при третото [`1 3|2`] и при четвъртото [`1 3|4 2`], тоест финалната редица е "1 3 4 2". +Пример: ако са въведени числата "1 2 3 4", и си представяме правата {` |}, при първото число правим {` 1|}, при второто {` 1|2}, при третото {` 1 3|2} и при четвъртото {` 1 3|4 2}, тоест финалната редица е "1 3 4 2". Друг начин по който да го разберем, е че първото число е на първа позиция, второто число е на последната, третото число е на втора позиция, четвъртото е на предпоследна и так. нат. Обаче ние не знаем финалния размер на масива, затова се нуждаем от логиката с чертата. @@ -130,9 +140,10 @@ GitHub classroom: [url https://classroom.github.com/a/Big7FRUG classroom.github. Напомням, че тази права само си я представяте. В началото масива е с размер 2. -[=Примери:=] +{b Примери:} -:table_2 +:table +:2 |= Вход |= Изход @@ -143,9 +154,10 @@ GitHub classroom: [url https://classroom.github.com/a/Big7FRUG classroom.github. |: 85 26 45 48 11 56 78 18 41 38 43 + ## Задача 6 -Трябва да направите интерпретатор за програмния език [url https://en.wikipedia.org/wiki/Brainfuck brainfuck]. +Трябва да направите интерпретатор за програмния език {url brainfuck;https://en.wikipedia.org/wiki/Brainfuck}. В него имате 8 команди/инструкции, всяка от които се изразява с един знак. Запазвате в паметта няколко неща: вашата brainfuck програма, паметта на "машината", къде се намирате в програмата и къде се намирате в паметта на "машината". @@ -155,21 +167,22 @@ GitHub classroom: [url https://classroom.github.com/a/Big7FRUG classroom.github. Самите команди (знаци), които съставят една brainfuck програма са: .bulleted -- [`>`]: сегашната клетка (къде се намирате в паметта на "машината") става тази в дясно -- [`<`]: сегашната клетка става тази в ляво -- [`+`]: инкрементира стойността в сегашната клетка с едно -- [`-`]: декрементира стойността в сегашната клетка с едно -- [`.`]: изкарва стойността в сегашната клетка (като число) -- [`,`]: приема от входа едно число и го записва в сегашната клетка -- [`\[`]: ако стойността в сегашната клетка е 0, тогава програмата "скача" напред към знака след съответната [`\]`] -- [`\]`]: ако стойността в сегашната клетка не е 0, тогава програмата "скача" назад към знака след съответната [`\[`] +- {` >}: сегашната клетка (къде се намирате в паметта на "машината") става тази в дясно +- {` <}: сегашната клетка става тази в ляво +- {` +}: инкрементира стойността в сегашната клетка с едно +- {` -}: декрементира стойността в сегашната клетка с едно +- {` .}: изкарва стойността в сегашната клетка (като число) +- {` ,}: приема от входа едно число и го записва в сегашната клетка +- {` [}: ако стойността в сегашната клетка е 0, тогава програмата "скача" напред към знака след съответната {` ]} +- {` ]}: ако стойността в сегашната клетка не е 0, тогава програмата "скача" назад към знака след съответната {` [} -От входа ще получавате редица знаци, които ще съставят вашата brainfuck програма, като при знака [`$`] входът спира и трябва да започнете изпълнение на brainfuck кода. +От входа ще получавате редица знаци, които ще съставят вашата brainfuck програма, като при знака {` $} входът спира и трябва да започнете изпълнение на brainfuck кода. Не знаете колко памет на "машината" ще ви трябва, затова бъдете готови да я разширявате при нужда. -[=Пример:=] +{b Пример:} -:table_2 +:table +:2 |= Вход |= Изход @@ -177,6 +190,7 @@ GitHub classroom: [url https://classroom.github.com/a/Big7FRUG classroom.github. |: 7 + ## Задача 7 Нека да направим една игра, ще я наричамe "коридорен dungeon". @@ -224,4 +238,4 @@ GitHub classroom: [url https://classroom.github.com/a/Big7FRUG classroom.github. Всеки допълнителен телепортер, извън първоначалния с който спирате играта, ви носи още 50 точки. На всеки ход трябва да изкарате броя точки живот на играча, броя точки живот които меча му отнема, сегашната стая в която се намира, левите 5 стаи и десните 5 стаи. -Една стая е изобразена със знака [`?`] ако не е посетена, [` `] ако е празна, [`c`] ако има съкровище, [`m`] ако има чудовище и [`t`] ако има тунел. +Една стая е изобразена със знака {` ?} ако не е посетена, {` } ако е празна, {` c} ако има съкровище, {` m} ако има чудовище и {` t} ако има тунел. |