# Задания практики 2021 # Вводные указания и ссылки [TOC] ## Начальный опрос > Comment Ответьте, пожалуйста (с именем и фамилией), на вопросы - "Что больше и почему?" > $$ 2^{3^4} ~~ \text{или} ~~ 4^{2^3} $$ > Comment Какие языки программирования и представлений вы знаете из следующего списка? 1. JavaScript 2. TypeScript 3. Julia 4. Go 5. Python 6. Java 7. Erlang 8. Rust 9. C/C++ 10. C# 11. GLSL 12. HTML 13. CSS 14. MD ## Особенности языка MD(MarkDown) и возможностей hackmd.io Язык MD (MarkDown) можно рассматривать как надстройку над HTML, упрощающую редактирование контента и интегрирование информационных ресурсов. На сайте hackmd.io в нем можно использовать теги HTML, кроме, к сожалению, тега \<script\>. Язык MD стал стандартом де-факто для описания программных ресурсов на сайтах-системах контроля версий github.com, хостингах glitch.com, replit.com и множества других. Образцы использования и описания можно найти по ссылке https://hackmd.io/c/book-example/%2Fs%2Ffeatures ### Примеры использования фреймов-ссылок на другие сайты [Shader Toy Example](https://www.shadertoy.com/view/tdScDh) [Open Graphics Service](https://open-graphics-service.glitch.me/) [replit.com ](https://replit.com/@ArthMax/HCPP#main.cpp) [overleaf](https://www.overleaf.com/project/5f02f0d3b5953000011f3b2d) glitch.com EXAMPLE <iframe src="https://pixel-canvas-graphics-b.glitch.me/" height="800px" width="1000px"></iframe> ### Вариант подключения поясняющих рисунков и формул <iframe src="https://www.geogebra.org/graphing/r2ntemzx" height="800px" width="1000px"></iframe> ## Цели практики 1) Получение навыков быстрого овладения языками программирования, которые вы не (очень хорошо) знаете 2) Применение полученных математических знаний и навыков для формулировки и реализации решения задач 3) Получение навыков структуризации и описания Вашей работы и полученных результатов с помощью современных систем совместной онлайн работы и представления информации в сети ## Обратная связь во время занятий тел. 0669290326 telegram group "Practice 2021" # 1. Задание на 29.06.2021 . Автопортрет ## Задание 1. 1. Создать одиночную страницу c названием, в котором есть Ваше Имя и Фамилия, на сайте glitch.com или replit.com, в которой указываются * Ваши *Фамилия Имя Отчество + Название Вашей специальности+ Курс* * Ваше *Фото в профиль* * Cсылки на сайт shadertoy.com c реализованной Вами визуализацией с помощью неявных функций в пиксельном шейдере (адаптированный вариант использования языка GLSL) а) *Смешарика* б) *Чебурашки* ## Задание 2. Создать ссылки на сайт shadertoy.com c реализованной Вами визуализацией с помощью неявных функций в пиксельном шейдере (адаптированный вариант использования языка GLSL) а) Вашего *Имени и Фамилии* б) Вашего *Автопортрета в профиль* (автопортрет должен быть узнаваем - будет сравниваться с Вашим фото) Описание выполненных работ выполнить на сайте hackmd.io на страницах с названием "Учебная практика. Дата. Фамилия Имя Отчество". Ссылку на описание проделанной (возможно, неполной) работы прислать в группу telegram "Practice 2021". ## Задание 3 Зарегистрироваться на сайте overleaf.com и ознакомиться с примером оформления [Отчета о практике](https://www.overleaf.com/read/jjtkdttfswnn) ## Ссылки для работы и самостоятельного ознакомления: 1. <a href="https://pixel-canvas-graphics-b.glitch.me/"> Математическое введение и пример реализации пиксельной шейдерной программы для Shader Toy</a> 2. <a href="https://www.shadertoy.com/view/tdScDh"> Непосредственный пример визуализации на сайте shadertoy.com</a> 3. <a href="https://thebookofshaders.com/?lan=ru"> Начальное знакомство и первые эксперименты с подмножеством языка GLSL для пиксельных шейдеров</a> 4. <a href="https://open-graphics-service.glitch.me/"> Сервисная страница, облегчающая снятие координат с фотографий и рисунков</a> 5. <a href="https://hackmd.io/c/book-example/%2Fs%2Ffeatures">Образцы использования и описания версии языка MD на сайте hackmd.io </a> # 2. Задания на 1.07.2021 Полиномы, элементарные функции и ряды Тейлора. >Comment Как на языке javascript создать массив? >Как на языке javascript добавлять элементы в массив? ## Задание 1. Написать на языке javascript с использованием html и css программы (страницы в браузере, исходный код который должен лежать на сайте replit.com), выполняющие разложение в частичный ряд Тейлора ( $n$-й полином Тейлора) 1. Произведения вида $P(x)\times Q(x)$, где $P(x)$ и $Q(x)$ - произвольные полиномы с целочисленными коэффициентами. Например, на ввод $$(1 x^3 - 4 x^2 + 1 x - 5) (1 - 1 x^2)$$ и $$n=5$$ ваша программа должна ответить $$-5 + 1 x + 1 x^2 + 0 x^3 + 4 x^4 -1 x^5$$ 2. Полинома вида $P(x)^m$, где $P(x)$ - произвольный полином с целочисленными коэффициентами, а $m$ - натуральное число Например, на ввод $$(3 - 2 x + 4 x^3)^4$$ и $$n=12$$ ваша программа должна ответить $$256 x^{12} - 512 x^{10} + 768 x^9 + 384 x^8 - 1152 x^7 + 736 x^6 + 576 x^5 - 848 x^4 + 336 x^3 + 216 x^2 - 216 x + 81$$ 3. Рациональной функции вида $P(x)\over Q(x)$, где $P(x)$ и $Q(x)$ - произвольные многочлены с целочисленными коэффициентами Например, на ввод $$ 3 - 2 x + 4 x^3 \over 1 - 5 x + 7 x^2 $$ и $$n=4$$ ваша программа должна ответить $$3 + 13 x + 44 x^2 + 133 x^3 + 357 x^4 $$ 4. Произвольной элементарной функции и их композиций Например, на ввод $$ \sin(x)$$ и $$n=5$$ ваша программа должна ответить $$0+ 1 x +0 x^2 - 0.16666666666 x^3 + 0x^4 + 0.00833333333 x^5 $$ 5. Функций, в которых вычисляется абсолютное значение произвольных элементарных функций и их композиций, например $|x^3|$ ## Задание 2. Визуализировать произвольную исходную функцию и все ее частичные ряды Тейлора (с 1-го по $n$-й полином Тейлора)на языке javascript с использованием html и css и, возможно, шейдеров. На рисунке показан пример визуализации исходной функции $\sin(x)$ (график черного цвета) и ее частичных рядов Тейлора (цветные графики) ![](https://i.imgur.com/Z6SKINP.png) ## Ресурсы и ссылки 1. https://www.wolframalpha.com/ 2. https://ru.wikipedia.org/wiki/%D0%A0%D1%8F%D0%B4_%D0%A2%D0%B5%D0%B9%D0%BB%D0%BE%D1%80%D0%B0 3. https://en.wikipedia.org/wiki/Taylor_series 4. https://en.wikipedia.org/wiki/Rational_function 5. https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F 6. https://developer.mozilla.org/ru/docs/Learn/JavaScript/First_steps/Math 7. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators 8. https://mathjs.org/ # 3. Задания на 2.07.2021 Кривые и интегралы. >Comment Как посчитать длину $\sin(x)$ на на отрезке $[0, 2\pi]$ ? ## Задание 1. Радиус колеса арбы Ходжи Насреддина равен $r$ метров. Насреддин путешествовал на своей арбе по всему Востоку и проехал $L$ фарсахов (один фарсах равен 5549 метрам). ![](https://i.imgur.com/4TtTD3Z.gif) Ходжа гордился своим путешествием, но больше всего он гордился гвоздем на ободе колеса. Какой путь совершил гвоздь на ободе колеса Ходжи Насреддина? Если Вы решите эту задачу, Вы можете также гордиться собой. Написать программу, которая: 1) получает два числа: $r$ (в метрах) и $L$ (в фарсахах) и определяет путь $s$ гвоздя Ходжи Насреддина (в фарсахах); 2) демонстрирует, как двигалась арба вместе с сидящим на ней Ходжей Насреддином; 3) демонстирует, как двигался гвоздь Ходжи Насреддина. ## Задание 2. Самый Известный Ювелир хочет подарить Вам зеркало с золотой функцией, чтобы глядя на золотую функцию, Вы бы никогда не забывали, какой Вы умный! <center> <img width="460" src="https://i.imgur.com/KWGB5DF.jpg"> </center> Самый Известный Ювелир выкладывает функцию из золотой проволоки прямо на зеркале. Он спрашивает у Вас: $a$ - где функция начинается и $b$ - где она заканчивается, а также, $f$ - как она называется. Самый Известный Ювелир знает что стоимость одного сантиметра золотой проволоки равна одной условной золотой единице, но он не знает, сколько будет стоить золотая функция. Помогите Самому Известному Ювелиру, и тогда Вы будете достойны такого подарка! <center> <img width="460" src="https://i.imgur.com/xeEByts.jpg"> </center> Написать программу, которая: 1) получает два числа: $a$ и $b$ (и то и другое в сантиметрах) и гладкую функцию $f(x)$, которая в точке $x=a$ принимает значение $f(a)$, а в точке $x=b$ принимает значение $f(b)$ (и то и другое в сантиметрах) и определяет стоимость $s$ золотой функции; 2) демонстрирует подарок Самого Известного Ювелира - зеркало, на котором золотая функция сверкает на фоне Вашего отражения (Вашего профиля). ## Задание 3. Согласно прогнозу погоды в Синем Океане, начиная со времени $t_0$ и до момента $t_1$ включительно, корабль Барона Мюнхгаузена попадет в Дробно-Рациональный Шторм! Но Барон Мюнхгаузен не боится трудностей. Единственное, что он хочет знать, так это реальную сложность Шторма. ![](https://i.imgur.com/fXGsmx8.png) Сложность Шторма складывается из сложностей всех моментов Шторма, умноженных на длительность этих моментов. Иногда сложность бывает бесконечной (причем со знаком). Помогите Барону преодолеть Шторм - сообщите ему о реальной сложности Шторма, и он не забудет Вас в своих Абсолютно Правдивых Мемуарах. Написать программу, которая: 1) получает два момента времени: $t_0$ и $t_1$ и дробно-рациональную функцию сложностей моментов шторма $P(t)/Q(t)$, где $P(t)$ и $Q(t)$ полиномы от времени $t$. Ваша программа должна определить число $S$ - сложность всего Шторма; 2) демонстрирует надвигающийся Шторм в Синем Океане; 3) **демонстрирует, как корабль Барона Мюнхаузена преодолевает Волны Шторма (всегда по касательной!)** 4) **получает абсолютно точное выражение для $S$** ![](https://i.imgur.com/VgZRq90.png) ## Ресурсы и ссылки 1. https://www.wolframalpha.com/ 2. https://en.wikipedia.org/wiki/Curve 3. https://en.wikipedia.org/wiki/Arc_length#:~:text=Arc%20length%20is%20the%20distance,form%20solutions%20in%20some%20cases. 4. https://ru.wikipedia.org/wiki/%D0%94%D0%BB%D0%B8%D0%BD%D0%B0_%D0%BA%D1%80%D0%B8%D0%B2%D0%BE%D0%B9 5. https://ru.wikipedia.org/wiki/%D0%A6%D0%B8%D0%BA%D0%BB%D0%BE%D0%B8%D0%B4%D0%B0 6. https://en.wikipedia.org/wiki/Rational_function 7. https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F 8. https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D0%BB_%D0%A0%D0%B8%D0%BC%D0%B0%D0%BD%D0%B0 9. https://en.wikipedia.org/wiki/Numerical_integration 10. https://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5_%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 11. https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Drawing_graphics # 4. Задания 05.07.2021. Codewars Day1. 1. Зарегистрироваться на сайте codewars.com 2. Выбрать в качестве базовых языков C++ и Java 3. В меню поиска задача **выбрать задачи с тегом Numbers** https://www.codewars.com/kata/latest/my-languages?tags=Numbers 4. Выбрать уникальную задачу (не совпадающую с выбранными задачами Ваших коллег) и занести ссылку на нее в таблицу CodeWars1 в строке с Вашими Именем и Фамилией в соответствущей колонке https://docs.google.com/spreadsheets/d/1y422vIbRRjURF33wGt8ccd0oeM7p8SMVcQaj1Cr89kY/edit?usp=sharing 5. Перевести условие задачи на русский язык или украинскую мову и записать название задачи, ссылку на задачу, оригинальное условие задачи и перевод задачи на странице отчета сегодняшенго дня. 6. Решить задачу **однотипным образом** на 2-х языках программирования - сначала на C++, а затем на Java. **Задача считается решенной, если она решено на 2-х языках программирования.** 7. Отметить решенную задачу комментарием в соответствующей ячейке таблицы 8. Коды решенной задачи вместе (соответствующим образом отформатированные) поместить на страницу отчета сегодняшнего дня 9. Оценка задачи полностью решенной и защищенной в течение, равна 4/Q, где Q - это рейтинг задачи в kyu. Например, если задача имеет рейтинг 8 kyu, то за ее полное решение вы получаете 4/8 = 0.5 балла. 10. Повторять пункты 4.--9. последовательно (следующая задача выбирается только после того, как решена предыдущая) и дублировать Ваши решения с комментариями, ``` //Учебная практика. 05.07.2021. Фамилия Имя Отчество. ``` для аккаунта superstudent c e-mail: a.maximov@onu.edu.ua и паролем: superstudent ## Пример решения задачи ### Задача. Square(n) Sum 8 qyu (https://www.codewars.com/kata/515e271a311df0350d00000f) Complete the square sum function so that it squares each number passed into it and then sums the results together. For example, for [1, 2, 2] it should return 9 because 1^2 + 2^2 + 2^2 = 9. Завершите функцию вычисления суммы квадратов, так, чтобы она возводила в квадрат каждое переданное число и суммировала общий результат. ### Решение на языке c++. ```c #include <vector> int square_sum(const std::vector<int>& numbers) { int l = numbers.size(); int s = 0; for(int i=0; i<l;++i) s += numbers[i]*numbers[i]; return s; } ``` ### Решение на языке java. ```java= public class Kata { public static int squareSum(int[] n) { int l = n.length; int s = 0; for(int i=0; i<l; ++i) s += n[i]*n[i]; return s; } } ``` ## Ссылки и ресурсы 1. Портал тестирования codewars.com 2. Таблица CodeWars1 https://docs.google.com/spreadsheets/d/1y422vIbRRjURF33wGt8ccd0oeM7p8SMVcQaj1Cr89kY/edit?usp=sharing 3. Oнлайн-ресурс обучения программированию на Java https://javarush.ru/ 4. wiki Java (programming language) https://en.wikipedia.org/wiki/Java_(programming_language) 5. wiki C++ https://en.wikipedia.org/wiki/C%2B%2B # 5. Задание 06.07.2021 . Codewars Day2. 1. В меню поиска задача **выбрать задачи с тегом Algorithms** https://www.codewars.com/kata/latest/my-languages?tags=Algorithms 2. Выбрать уникальную задачу (не совпадающую с выбранными задачами Ваших коллег и Вашими задачами в Codewars Day2 и Codewars Day1) и занести ссылку на нее в таблицу CodeWars2 в строке с Вашими Именем и Фамилией в соответствущей колонке https://docs.google.com/spreadsheets/d/1y422vIbRRjURF33wGt8ccd0oeM7p8SMVcQaj1Cr89kY/edit#gid=1398701770 3. Перевести условие задачи на русский язык или украинскую мову и записать название задачи, ссылку на задачу, оригинальное условие задачи и перевод задачи на странице отчета сегодняшнего дня. 4. Решить задачу **однотипным образом** на 2-х языках программирования - сначала на C++, а затем на Java. **Задача считается решенной, если она решена на 2-х языках программирования.** 5. Отметить решенную задачу словом Solved! в соответствующей ячейке таблицы 6. Коды решенной задачи вместе (соответствующим образом отформатированные) поместить на страницу отчета сегодняшнего дня. 7. Оценка задачи, полностью решенной и защищенной, равна 4/Q, где Q - это рейтинг задачи в kyu. Например, если задача имеет рейтинг 8 kyu, то за ее полное решение вы получаете 4/8 = 0.5 балла. 8. Повторять пункты 2.--7. последовательно (следующая задача выбирается только после того, как решена предыдущая) и дублировать Ваши решения с комментариями, ``` //Учебная практика. 05.07.2021. Фамилия Имя Отчество. ``` для аккаунта superstudent c e-mail: a.maximov@onu.edu.ua и паролем: superstudent ## Ссылки и ресурсы 1. Задачи с тегом Algorithm на портале тестирования codewars.com : https://www.codewars.com/kata/latest/my-languages?tags=Algorithms 3. Таблица учета задач CodeWars2 : https://docs.google.com/spreadsheets/d/1y422vIbRRjURF33wGt8ccd0oeM7p8SMVcQaj1Cr89kY/edit#gid=1398701770 # 6. Задание 07.07.2021 . Codewars Day3. 1. В меню поиска задача **выбрать задачи с тегом Mathematics** https://www.codewars.com/kata/search/my-languages?q=&tags=Mathematics 2. Выбрать уникальную задачу (не совпадающую с выбранными задачами Ваших коллег и Вашими задачами в Codewars Day3, Codewars Day2 и Codewars Day1) и занести ссылку на нее в таблицу CodeWars3 в строке с Вашими Именем и Фамилией в соответствущей колонке https://docs.google.com/spreadsheets/d/1y422vIbRRjURF33wGt8ccd0oeM7p8SMVcQaj1Cr89kY/edit#gid=733716609 3. Перевести условие задачи на русский язык или украинскую мову и записать название задачи, ссылку на задачу, оригинальное условие задачи и перевод задачи на странице отчета сегодняшнего дня. 4. Решить задачу **однотипным образом** на 2-х языках программирования - сначала на C++, а затем на Java. **Задача считается решенной, если она решена на 2-х языках программирования.** 5. Отметить решенную задачу словом Solved! в соответствующей ячейке таблицы 6. Коды решенной задачи вместе (соответствующим образом отформатированные) поместить на страницу отчета сегодняшнего дня. 7. Оценка задачи текущего дня полностью решенной и защищенной в течение , равна 4/Q, где Q - это рейтинг задачи в kyu. Например, если задача имеет рейтинг 8 kyu, то за ее полное решение вы получаете 4/8 = 0.5 балла. 8. Повторять пункты 2.--7. последовательно (следующая задача выбирается только после того, как решена предыдущая) и дублировать Ваши решения с комментариями, ``` //Учебная практика. 05.07.2021. Фамилия Имя Отчество. ``` для аккаунта superstudent c e-mail: a.maximov@onu.edu.ua и паролем: superstudent ## Ссылки и ресурсы 1. Задачи с тегом Mathematics на портале тестирования codewars.com : https://www.codewars.com/kata/search/my-languages?q=&tags=Mathematics 2. Таблица учета задач CodeWars3 : https://docs.google.com/spreadsheets/d/1y422vIbRRjURF33wGt8ccd0oeM7p8SMVcQaj1Cr89kY/edit#gid=733716609