Summary Files Commits Branches @commit @diff @stats
path: root / src / teaching / upp-2023 / week8 / index.du
diff options
context:
space:
mode:
1 files changed, 41 insertions, 27 deletions
-rw-r--r--src/teaching/upp-2023/week8/index.du68
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} ако има тунел.