diff options
1 files changed, 146 insertions, 102 deletions
| -rw-r--r-- | src/teaching/upp-2025/week08/index.du | 248 |
diff --git a/src/teaching/upp-2025/week08/index.du b/src/teaching/upp-2025/week08/index.du index 4b75284..f7b2eaa 100644 --- a/src/teaching/upp-2025/week08/index.du +++ b/src/teaching/upp-2025/week08/index.du @@ -1,22 +1,23 @@ -# Задачи - УПП, Седмица 8, 20.11.2025 +'def title Задачи - УПП, Седмица 8, 20.11.2025 +'def desc Условията на задачите за упражнение. -'define expected-reading 34 min -'define created 15 November 2025 -'define edited 23 November 2025 -[$pagenav] +# {title} -GitHub Classroom: [url https://classroom.github.com/a/rhpKbNmH] +{pagenav 34 min;15 November 2025;23 November 2025} + +GitHub Classroom: {url https://classroom.github.com/a/rhpKbNmH} ## За решаване ### Задача 1 -.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise01.cpp Решение] +.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise01.cpp} От входа получавате матрица 5 на 5 от цели числа. -Трябва да върнете дали е разредена матрица: дали има [*повече*] нули отколкото други числа. +Трябва да върнете дали е разредена матрица: дали има {i повече} нули отколкото други числа. -:table_2 +:table +:2 |= Вход |= Изход @@ -45,9 +46,10 @@ Not sparse Sparse + ### Задача 2 -.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise02.cpp Решение] +.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise02.cpp} Напишете функция, която получава матрица с произволен размер и масив, чиято дължина е същата като на един ред в матрицата. @@ -56,7 +58,8 @@ Sparse От входа получавате матрица 7 на 3 от цели неотрицателни числа. Използвайки вашата функция, намерете сумата на всички редове и я изкарайте. -:table_2 +:table +:2 |= Вход |= Изход @@ -89,9 +92,10 @@ Sparse 204 208 379 + ### Задача 3 -.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise03.cpp Решение] +.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise03.cpp} Напишете функция, която получава две матрици с произволни размери, съствени от реални числа. Може да допуснете, че размера на втората матрица е по-малък от тази на първата. @@ -100,14 +104,15 @@ Sparse Тоест, всички елементи от горния ляв ъгъл, надолу и надясно колкото е размера на втората матрица. От входа получавате матрица 6 на 6 от реални числа. -След това получавате 4 неотрицателни числа: първите две са координат в матрицата (където горния ляв ъгъл е [`(0, 0)`]), вторите две са нейни размери. +След това получавате 4 неотрицателни числа: първите две са координат в матрицата (където горния ляв ъгъл е {` (0, 0)}), вторите две са нейни размери. -Използвайки вашата функция, трябва да изкарате подматрицата с начало подадения координат и размери подадените размери [=използвайки=] вашата функция. +Използвайки вашата функция, трябва да изкарате подматрицата с начало подадения координат и размери подадените размери {b използвайки} вашата функция. .note -[=(23.11.2025)=] Опростени някои примери. +{b (23.11.2025)} Опростени някои примери. -:table_2 +:table +:2 |= Вход |= Изход @@ -180,26 +185,28 @@ Sparse 100 64 46.204 30812 + ### Задача 4 -.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise04.cpp Решение] +.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise04.cpp} City Bloxx е известна мобилна игра за строене на сгради. В нейния "Build city" режим, целта е построените сгради да се подредят в матрица 5 на 5. Нека да разгледаме следните правила за сгради (в самата игра има някои разлики): .numbered -1. [*Жилищните сгради*] може да се поставят навсякъде. -2. [*Търговските сгради*] трябва да бъдат поставени до поне една жилищна сграда. -3. [*Офис сградите*] трябва да бъдат поставени до поне една жилищна и една търговска. -4. [*Луксозните сгради*] трябва да бъдат поставени до поне една жилищна, една търговска и една офис сграда. +1. {i Жилищните сгради} може да се поставят навсякъде. +2. {i Търговските сгради} трябва да бъдат поставени до поне една жилищна сграда. +3. {i Офис сградите} трябва да бъдат поставени до поне една жилищна и една търговска. +4. {i Луксозните сгради} трябва да бъдат поставени до поне една жилищна, една търговска и една офис сграда. -Сгради са съседни само по вертикал и хоризонтал, [=не=] по диагонал. +Сгради са съседни само по вертикал и хоризонтал, {b не} по диагонал. От входа получавате масив 5 на 5 с цели числа, където с 1 до 4 се обозначават сградите, от жилищни до луксозни. Изкарайте дали подредбата на сградите е позволена (следва горните правила). -:table_2 +:table +:2 |= Вход |= Изход @@ -254,14 +261,16 @@ City Bloxx е известна мобилна игра за строене на |: Valid + ### Задача 5 -.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise05.cpp Решение] +.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise05.cpp} От входа получавате матрица 3 на 3, съствена от цели числа. Трябва да я транспонирате: да смените елементите над и под главния диагонал, и да изкарате резултата. -:table_2 +:table +:2 |= Вход |= Изход @@ -290,9 +299,10 @@ City Bloxx е известна мобилна игра за строене на 0 2 5 + ### Задача 6 -.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise06.cpp Решение] +.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise06.cpp} Напишете функция, която приема матрица с произволни размери, съствена от реални числа, заедно с два индекса. Разменете колоните на подадените индекси, ако това е възможно. @@ -302,9 +312,10 @@ City Bloxx е известна мобилна игра за строене на Трябва да размените двете колони, използвайки вашата функция, и да изкарате резултата. -[*Вашия изход не е нужно да бъде подравнен.*] +{i Вашия изход не е нужно да бъде подравнен.} -:table_2 +:table +:2 |= Вход |= Изход @@ -348,17 +359,19 @@ City Bloxx е известна мобилна игра за строене на 16.84 53.84 0 -21.11 23.22 + ### Задача 7 -.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise07.cpp Решение] +.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise07.cpp} От входа получавате матрица от букви 3 на 3. -Тя определя шаблон, където буквата [`*`] означава, че всяка стойност е позволена. +Тя определя шаблон, където буквата {` *} означава, че всяка стойност е позволена. След това от входа получавате матрица 6 на 6, съствена от букви. -Трябва да намерите всички срещания на шаблона в тази матрица, като [=срещанията може да се застъпват!=] +Трябва да намерите всички срещания на шаблона в тази матрица, като {b срещанията може да се застъпват!} -:table_2 +:table +:2 |= Вход |= Изход @@ -419,17 +432,19 @@ City Bloxx е известна мобилна игра за строене на |: 16 + ### Задача 8 -.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise08.cpp Решение] +.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise08.cpp} От входа получавате две матрици 3 на 3, съствени от цели неотрицателни числа. Пресметнете умножението на матриците (ред по стълб) и изкарайте резултата. .note -[=(23.11.2025)=] Оправен входа на втория пример. +{b (23.11.2025)} Оправен входа на втория пример. -:table_2 +:table +:2 |= Вход |= Изход @@ -464,30 +479,32 @@ City Bloxx е известна мобилна игра за строене на 17 13 14 + ### Задача 9 -.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise09.cpp Решение] +.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise09.cpp} При изграждането на устройства като клавиатури, често се използва "бутонна матрица". -Няма да навлизаме в електрониката, но идеята е че когато натиснеш бутон, съответната колона [=и=] ред са "свързани"/активни. +Няма да навлизаме в електрониката, но идеята е че когато натиснеш бутон, съответната колона {b и} ред са "свързани"/активни. -[=Тоест, когато активни ред и колона се пресичат, тогава съответния бутон е натиснат.=] +{b Тоест, когато активни ред и колона се пресичат, тогава съответния бутон е натиснат.} Това означава, че се нуждаем да погледнем само състоянията на всеки ред и колона, и ще знаем всички натиснати бутони (вместо да поглеждаме всеки бутон поотделно). 'footnote keypad_image_attrib Изображение от Sakurambo - създадено чрез Adobe Illustrator CS2, Публичен домейн, [url https://commons.wikimedia.org/w/index.php?curid=2048341] -Нека да разглеждаме стандартна 4 на 3 телефонна клавиатура[$keypad_image_attrib]: +Нека да разглеждаме стандартна 4 на 3 телефонна клавиатура{keypad_image_attrib}: -[image https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Telephone-keypad2.svg/330px-Telephone-keypad2.svg.png] +{img https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Telephone-keypad2.svg/330px-Telephone-keypad2.svg.png} От входа първо получавате 4 булеви стойности: дали реда е активен (отгоре надолу). След това получавате още 3 булеви стойности: дали колоната е активна (отляво надясно). -Изкарайте кои бутони са натиснати, използвайки цифровите знаци, звезда ([`*`]) и диез ([`#`]). +Изкарайте кои бутони са натиснати, използвайки цифровите знаци, звезда ({` *}) и диез ({` #}). Ако няма натиснати, изкарайте съответно съобщение. -:table_2 +:table +:2 |= Вход |= Изход @@ -510,43 +527,44 @@ City Bloxx е известна мобилна игра за строене на |: Nothing pressed + ### Задача 10 -.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise10.cpp Решение] +.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise10.cpp} -[url https://en.wikipedia.org/wiki/Pascal%27s_triangle Триъгълника на Паскал] е изчисление, при което се конструира триъгълник от числа. +{url Триъгълника на Паскал;https://en.wikipedia.org/wiki/Pascal%27s_triangle} е изчисление, при което се конструира триъгълник от числа. По двете "рамене" има единици, и всяко вътрешно число е сумата на горните две. 'footnote pascal_animation_attrib Анимация от Hersfold - собствен труд, Публичен домейн, [url https://commons.wikimedia.org/w/index.php?curid=3902538] -Пояснителна анимация[$pascal_animation_attrib]: +Пояснителна анимация{pascal_animation_attrib}: -[image https://upload.wikimedia.org/wikipedia/commons/0/0d/PascalTriangleAnimated2.gif] +{img https://upload.wikimedia.org/wikipedia/commons/0/0d/PascalTriangleAnimated2.gif} -[=Генерирайте=] и изкарайте триъгълника на паскал в матрица 11 на 11, където двете страни на триъгълника са първата колона и главния диагонал. +{b Генерирайте} и изкарайте триъгълника на паскал в матрица 11 на 11, където двете страни на триъгълника са първата колона и главния диагонал. Нека стойностите извън триъгълника да са нули. -[=Изход:=] [*(не е нужно да бъде подравнен)*] +{b Изход:} {i (не е нужно да бъде подравнен)} .comment https://www.fcfung2000.com/ufcfiles/ufcmatrk.htm ``` -[=1=] 0 0 0 0 0 0 0 0 0 0 -[=1=] [=1=] 0 0 0 0 0 0 0 0 0 -[=1=] 2 [=1=] 0 0 0 0 0 0 0 0 -[=1=] 3 3 [=1=] 0 0 0 0 0 0 0 -[=1=] 4 6 4 [=1=] 0 0 0 0 0 0 -[=1=] 5 10 10 5 [=1=] 0 0 0 0 0 -[=1=] 6 15 20 15 6 [=1=] 0 0 0 0 -[=1=] 7 21 35 35 21 7 [=1=] 0 0 0 -[=1=] 8 28 56 70 56 28 8 [=1=] 0 0 -[=1=] 9 36 84 126 126 84 36 9 [=1=] 0 -[=1=] 10 45 120 210 252 210 120 45 10 [=1=] +{b 1} 0 0 0 0 0 0 0 0 0 0 +{b 1} {b 1} 0 0 0 0 0 0 0 0 0 +{b 1} 2 {b 1} 0 0 0 0 0 0 0 0 +{b 1} 3 3 {b 1} 0 0 0 0 0 0 0 +{b 1} 4 6 4 {b 1} 0 0 0 0 0 0 +{b 1} 5 10 10 5 {b 1} 0 0 0 0 0 +{b 1} 6 15 20 15 6 {b 1} 0 0 0 0 +{b 1} 7 21 35 35 21 7 {b 1} 0 0 0 +{b 1} 8 28 56 70 56 28 8 {b 1} 0 0 +{b 1} 9 36 84 126 126 84 36 9 {b 1} 0 +{b 1} 10 45 120 210 252 210 120 45 10 {b 1} ### Задача 11 -.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise11.cpp Решение] +.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise11.cpp} От входа получавате матрица 10 на 10 от цели неотрицателни числа. След това получавате размер между 0 и 10. @@ -559,11 +577,12 @@ City Bloxx е известна мобилна игра за строене на Не добавяйте към средното аритметично несъществуващи клетки (напр. клетката в горния ляв ъгъл няма клетки над или в ляво от себе си). .note -[=(23.11.2025)=] Добавени още примери. +{b (23.11.2025)} Добавени още примери. -[*(Вашия изход не е нужно да бъде подравнен.)*] +{i (Вашия изход не е нужно да бъде подравнен.)} -:table_2 +:table +:2 |= Вход |= Изход @@ -649,61 +668,65 @@ City Bloxx е известна мобилна игра за строене на 0 0 0 0 0 0 2 0 0 0 + ### Задача 12 -.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise12.cpp Решение] +.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise12.cpp} От входа получавате два реални координата, между (0,0) и (10,10). -Трябва да върнете матрица 10 на 10 от знаци, която се съставя единствено от шпации (spaces) и хиксове ([`x`]). +Трябва да върнете матрица 10 на 10 от знаци, която се съставя единствено от шпации (spaces) и хиксове ({` x}). Зачитаме, че координатите директно съответстват на матрицата, като (0,0) се намира в горния ляв ъгъл и (10,10) в долния десен. В тази матрица, по подразбиране стоят само шпации. Хиксовете се намират там, където начертаната отсечка между входните точки би застъпила матрицата. Примерна диаграма: -[image ./img/line_interpolation.png] +{img ./img/line_interpolation.png} Тази операция се нарича интерполация. .note -[=(23.11.2025)=] Добавени още примери. +{b (23.11.2025)} Добавени още примери. -:table_2 +:table +:2 |= Вход |= Изход |: 1 8.5 8.5 2.5 |: ``` -'include ./text/output_interpolation_1.txt +'snippet 1 $ ./text/output_interpolation_1.txt |: 0 0 10 10 |: ``` -'include ./text/output_interpolation_2.txt +'snippet 1 $ ./text/output_interpolation_2.txt |: 2.3 1.8 9.9 7 |: ``` -'include ./text/output_interpolation_3.txt +'snippet 1 $ ./text/output_interpolation_3.txt |: 0 5 10 5 |: ``` -'include ./text/output_interpolation_4.txt +'snippet 1 $ ./text/output_interpolation_4.txt + ## За самоподготовка ### Задача 13 -.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise13.cpp Решение] +.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise13.cpp} От входа получавате матрица 8 на 8, съставена от символите точка и плюс. Трябва да върнете височината и ширината на най-големия правоъгълник, който застъпва всички плюсове. -:table_2 +:table +:2 |= Вход |= Изход @@ -747,14 +770,16 @@ City Bloxx е известна мобилна игра за строене на |: 8 8 + ### Задача 14 -.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise14.cpp Решение] +.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise14.cpp} От входа приемате масив от 6 елемента и матрица с 6 реда и 3 колони, всички съставени от реални числа. Трябва да реализирате умножение на вектор по матрица (където масива е вектора). -:table_2 +:table +:2 |= Вход |= Изход @@ -783,16 +808,18 @@ City Bloxx е известна мобилна игра за строене на |: 8 7 41.8 + ### Задача 15 -.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise15.cpp Решение] +.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week08/Exercise15.cpp} От входа получавате матрица 9 на 7 с реални числа. След това получавате още едно реално число: максимална разлика. Проверете дали данните са гладки: стойността във всяка една клетка да се различава с най-много максималната разлика от всички свои съседни клетки (по хоризонтала, вертикала и диагонала). -:table_2 +:table +:2 |= Вход |= Изход @@ -857,6 +884,7 @@ City Bloxx е известна мобилна игра за строене на |: Not smooth + ### Задача 16 Напишете функция която приема матрица с произволни размери и "връща" матрица, която е като входната матрица, но всички елементи са "завъртяни" на дясно с 90 градуса. @@ -867,9 +895,10 @@ City Bloxx е известна мобилна игра за строене на Ако не можете, не записвайте нищо във върнатата. От входа получавате матрица 4 на 8, съставена от цели числа. -[=Използвайки вашата функция=], завъртете матрицата и изкарайте резултата. +{b Използвайки вашата функция}, завъртете матрицата и изкарайте резултата. -:table_2 +:table +:2 |= Вход |= Изход @@ -892,6 +921,7 @@ City Bloxx е известна мобилна игра за строене на 32 24 16 8 + ### Задача 17 Трябва да реализирате (опростен вариант на) "pixel binning": спрямо подаден коефициент, стойностите в клетки се смесват. @@ -901,7 +931,8 @@ City Bloxx е известна мобилна игра за строене на От входа получавате матрица 12 на 12 с цели неотрицателни числа и неотрицателен binning коефициент. Трябва да върнете матрицата след приложен binning. -:table_2 +:table +:2 |= Вход |= Изход @@ -937,6 +968,7 @@ City Bloxx е известна мобилна игра за строене на 2 2 0 0 0 0 0 0 0 0 12 12 + ### Задача 18 От входа получавате матрица 10 на 10 с цели неотрицателни числа. @@ -945,7 +977,8 @@ City Bloxx е известна мобилна игра за строене на Сравнявайте матриците по техния размер, тоест броя елементи. Ако има няколко еднакво големи подматрици, може да изкарате която и да е от тях. -:table_2 +:table +:2 |= Вход |= Изход @@ -970,6 +1003,7 @@ City Bloxx е известна мобилна игра за строене на 1 1 1 + ### Задача 19 От входа получавате матрица 8 на 8 от реални числа. @@ -984,7 +1018,8 @@ City Bloxx е известна мобилна игра за строене на Накрая изкарате резултатното число. -:table_2 +:table +:2 |= Вход |= Изход @@ -1020,9 +1055,10 @@ City Bloxx е известна мобилна игра за строене на 160 155 + ### Задача 20 -[=Генерирайте=] и изкарайте [url https://en.wikipedia.org/wiki/Bell_triangle триъгълника на Бел] в долния ляв ъгъл на матрица 11 на 11. +{b Генерирайте} и изкарайте {url триъгълника на Бел;https://en.wikipedia.org/wiki/Bell_triangle} в долния ляв ъгъл на матрица 11 на 11. Това означава, че страните на триъгълника включват първата колона и главния диагонал. .bulleted @@ -1033,13 +1069,13 @@ City Bloxx е известна мобилна игра за строене на 'footnote bell_animation_attrib Анимация от Xanthoxyl - собствен труд, CC BY-SA 3.0, [url https://commons.wikimedia.org/w/index.php?curid=5832904] -Пояснителна анимация[$bell_animation_attrib]: +Пояснителна анимация{bell_animation_attrib}: -[image https://upload.wikimedia.org/wikipedia/commons/a/ab/BellNumberAnimated.gif] +{img https://upload.wikimedia.org/wikipedia/commons/a/ab/BellNumberAnimated.gif} -Тази задача е подобна на [url #-10 Задача 10]. +Тази задача е подобна на {url Задача 10;#-10}. -[=Изход:=] [*(не е нужно да бъде подравнен)*] +{b Изход:} {i (не е нужно да бъде подравнен)} .comment https://oeis.org/A011971 @@ -1068,7 +1104,8 @@ https://www.apcomputersciencetutoring.com/2d-array-practice-exercises/#grow-meth Ако изходната матрица е по-голяма, попълнете празните позиции с нули. -:table_2 +:table +:2 |= Вход |= Изход @@ -1101,6 +1138,7 @@ https://www.apcomputersciencetutoring.com/2d-array-practice-exercises/#grow-meth 7 8 + ### Задача 22 От входа получавате матрица 3 на 3 със знаци. @@ -1108,11 +1146,12 @@ https://www.apcomputersciencetutoring.com/2d-array-practice-exercises/#grow-meth Трябва да изкарате матрица със знаци 9 на 9, в която е попълнено изображението спрямо режима. .numbered -1. [=Режим 1=] обозначава повтаряне, където изображението се повтаря последователно -2. [=Режим 2=] обозначава "border", където изображението се слага в центъра и останалта част се попълва със знак диес [`#`]. -3. [=Режим 3=] обозначава "clamp", изображението се слага в центъра и останалата част се попълва като се повтаря последната буква. Тоест, дясното 3 на 3 се попълва с повторение на десния знак. +1. {b Режим 1} обозначава повтаряне, където изображението се повтаря последователно +2. {b Режим 2} обозначава "border", където изображението се слага в центъра и останалта част се попълва със знак диес {` #}. +3. {b Режим 3} обозначава "clamp", изображението се слага в центъра и останалата част се попълва като се повтаря последната буква. Тоест, дясното 3 на 3 се попълва с повторение на десния знак. -:table_2 +:table +:2 |= Вход |= Изход @@ -1144,6 +1183,7 @@ f g h |: ``` +'emplace # # # # # # # # # # # # # # # # # # # # # # # # # # # @@ -1153,6 +1193,7 @@ f g h # # # # # # # # # # # # # # # # # # # # # # # # # # # +'endemplace |: ``` @@ -1174,6 +1215,7 @@ f f f g g g h h h f f f g g g h h h + ### Задача 23 От входа получавате цяло неотрицателно число, по-малко от 50. @@ -1181,9 +1223,10 @@ f f f g g g h h h Зачитайте, че 0 винаги е в центъра на спиралата и се въртите първо с една позиция разстояние, после с две и так. нат. -[*(Вашия изход не е нужно да бъде подравнен.)*] +{i (Вашия изход не е нужно да бъде подравнен.)} -:table_2 +:table +:2 |= Вход |= Изход @@ -1215,6 +1258,7 @@ f f f g g g h h h 15 14 13 12 + ## За любознателни ### Задача 24 @@ -1222,24 +1266,24 @@ f f f g g g h h h Реализирайте матричен калкулатор. От входа получавате матрица 4 на 4 с реални числа и след това получавате редица операции. -Всяка операция започва с буква, като буквата [`$`] сигнализира край на програмата. +Всяка операция започва с буква, като буквата {` $} сигнализира край на програмата. След всеки знак има няколко аргумента, т.е. допълнителни стойности които трябва да се въведат, преди операцията да се изпълни. .bulleted -- Операцията [`*`] обозначава умножение на ред, и след знака има цяло неотрицателно число за индекс на ред и след него е реално число (коефициент с който да умножим реда). -- Операцията [`+`] обозначава сума на редове, след знака се очакват два неотрицателни индекса на редове, първия ред се сумира в втория -- Операцията [`^`] обозначава размяна на редове, след знака се очакват два неотрицателни индекса на редове и стойностите им се разменят. +- Операцията {` *} обозначава умножение на ред, и след знака има цяло неотрицателно число за индекс на ред и след него е реално число (коефициент с който да умножим реда). +- Операцията {` +} обозначава сума на редове, след знака се очакват два неотрицателни индекса на редове, първия ред се сумира в втория +- Операцията {` ^} обозначава размяна на редове, след знака се очакват два неотрицателни индекса на редове и стойностите им се разменят. -След всяка операция (освен [`$`]) трябва да изкарате състоянието на матрицата. +След всяка операция (освен {` $}) трябва да изкарате състоянието на матрицата. ### Задача 25 -Трябва да реализирате [url https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life Играта "Живот"]. +Трябва да реализирате {url Играта "Живот";https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life}. От входа получавате матрица 10 на 10 с булеви стойности. След това получавате неотрицателно число: брой генерации (ходове). -Всяка клетка наричаме жива или мъртва (съответно на [`true`] или [`false`]). +Всяка клетка наричаме жива или мъртва (съответно на {` true} или {` false}). В една генерация (ход) на играта, всяка клетка променя своя статус (стойност) по следните правила: .bulleted - всяка жива клетка с по-малко от два живи съседа (вертикално, хоризонтално и диагонално) умира |