Инструменты пользователя

Инструменты сайта


10i_2025_algo

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
10i_2025_algo [2024/10/18 16:25]
super_admin [Алгоритмы для исполнителя Черепаха]
10i_2025_algo [2025/04/22 15:46] (текущий)
super_admin
Строка 1: Строка 1:
-====== 10И: Алгоритмы и структуры данных на языке программирования Python ======+====== 10И Введение в робототехнику ====== 
 + 
 +===== Мобильные роботы на базе платы Arduino ===== 
 +  * https://​uchebnik.mos.ru/​material/​512772?​sharing_key=9f41055a-e11d-49c9-a04c-8c7791c6689d мигающий светодиод 
 +  * https://​uchebnik.mos.ru/​material/​512435?​sharing_key=8f5898c3-43bc-40d4-99b5-862287fd3dfb мобильный робот с дистанционным управлением 
 +  * https://​wokwi.com/​projects/​344891652101374548 мигающий светодиод 
 +  * https://​wokwi.com/​projects/​291958456169005577 пианино 
 +  * https://​wokwi.com/​projects/​322062421191557714 дисплей 
 +  * https://​blog.wokwi.com/​ БЛОГ 
 +  * https://​uchebnik.mos.ru/​material/​516814?​sharing_key=555d591a-1be3-4684-9167-deee7f693889 мигающий светодиод 
 +  * https://​www.perplexity.ai/​search/​podkliuchite-k-arduino-knopku-ur5BM33PQm6VpBuV32mBEQ 
 + 
 +Подключите к Arduino кнопку и три светодиода (макет светофора) и кнопку. 
 +Напиши код обработки нажатия кнопки. Каждый раз нажатием по кнопке светофор будет переключаться в следующее состояние. С красного на желтый,​ с желтого на зеленый,​ с зеленого на красный,​ и т.д. 
 + 
 +===== КИБЕР-БОЙ ===== 
 + 
 +==== Тренировочное задание ==== 
 +    * [[https://​uchebnik.mos.ru/​material/​3697?​menuReferrer=catalogue]] Моделирование роботов 
 +    * [[https://​disk.yandex.ru/​d/​xwEHbzQcM1avVAg]] Дистанционное управление роботом 
 +    * [[https://​disk.yandex.ru/​i/​xMA8bQK3cBFnKrg]] Подключение сервопривода (схема) 
 +    * [[https://​disk.yandex.ru/​d/​xxYwty4bc2qFNWw]] Программа управления сервоприводом 
 +    * [[https://​uchebnik.mos.ru/​material/​575801?​sharing_key=8abe3114-a651-4d76-b836-de4c905f336f]] - **ссылка на робота с манипулятором** 
 +    * https://​uchebnik.mos.ru/​material/​x581130?​sharing_key=25ee8317-0888-402f-bde4-e2305745b89c - **робот с манипулятором и захватом** 
 + 
 +==== Первый этап ==== 
 + 
 +  * {{ :​этап_1_задание.pdf |этап 1 задание}} 
 +  * {{ :​этап_1_критерии.pdf | этап 1 критерии}} 
 +  * https://​disk.yandex.ru/​i/​IsDYi906-dPCKw - Кибер-бой этап 1 презентация 
 +  * {{ :​таблица_кодов.xlsx |}} 
 +  * https://​uchebnik.mos.ru/​material/​3696?​menuReferrer=catalogue - **Виртуальная лаборатория** 
 +  * https://​forms.yandex.ru/​cloud/​673f3a77f47e73ddb3681c59/​ форма для отчёта 
 +  * https://​disk.yandex.ru/​d/​xMVOo3xNf2gTjgw 
 + 
 +==== Второй этап ==== 
 +  * {{ :​этап_2_задание.pdf | Этап 2. Задание}} 
 +  * [[https://​uchebnik.mos.ru/​material/​3695 | Виртуальная лаборатория Технология. Построение логических схем ]]  
 + 
 +  * {{::​vl_logika_1.png?​400|}} 
 +  * {{:​vl_logika_2.png?​400|}} 
 +  * {{:​vl_logika_3.png?​400|}} 
 + 
 +==== Сумматор двухразрядных чисел ==== 
 +{{::​сумматор_дв_р_2.png?​400|}} 
 + 
 +  * https://​disk.yandex.ru/​i/​x2jP6jmANC6PaPg 
 +  * https://​disk.yandex.ru/​i/​x4p33r-cuciUcgw 
 +  * https://​disk.yandex.ru/​d/​xp7SvlJgDh1LHWg 
 +  * https://​disk.yandex.ru/​d/​xTX6XddD5N9rk8g 
 + 
 +===== Третий этап ===== 
 +  * [[https://​uchebnik.mos.ru/​material/​3697]] - **Виртуальная лаборатория:​ "​Технология. Моделирование роботов**"​ 
 +  * [[https://​disk.yandex.ru/​d/​xbNtfVR2eoPMgg]] - ссылка на учебные материалы (задание,​ критерии оценки,​ презентация,​ демонстрация возможного результата) 
 +  * [[https://​uchebnik.mos.ru/​material/​603925?​sharing_key=725feac9-6787-4e7f-bd00-0cdfaa781676]] Пример работы УЗ датчика v1 
 +  * https://​uchebnik.mos.ru/​material/​512435?​sharing_key=36ece898-ef99-40a8-b9ac-98973d7cd87e Робот с гусеницами. 
 +  * https://​uchebnik.mos.ru/​material/​603948?​sharing_key=29f7b5b6-cca7-4fa5-8184-f551aa76c9d1 v2 Робот с гусеницами и УЗ  
 + 
 +===== Четвёртый этап ===== 
 + 
 +  * [[https://​disk.yandex.ru/​d/​uEbF0xSYLLpxSQ]] материалы,​ задание 
 +  * https://​school.mos.ru/​vrlabs/​electrodynamics/​app?​link=9frFsPHb5f8ag3Cdk0f5 - вирт. лаб. Эл. дин. 
 +  * https://​skysmart.ru/​articles/​physics/​parallelnoe-i-posledovatelnoe-soedinenie расчёт сопротивлений 
 +  * https://​forms.yandex.ru/​cloud/​67d428835056906066cbd6f4/​ - форма для отчёта о проделанной работе. 
 + 
 +===== Пятый этап ===== 
 + 
 +  * https://​uchebnik.mos.ru/​material/​50a49afd-b7d0-4ecb-983c-daf55c4baed1?​sharing_key=5a69757f-6cf3-4d3c-ae8b-efdb42b36549 - пример частично собранного варианта 
 +  * [[https://​uchebnik.mos.ru/​material/​cb7d71a7-d539-49af-a8d7-f186dace09bb?​menuReferrer=catalogue]] Виртуальная лаборатория:​ "​Теория вероятностей"​. 
 +  * [[https://​uchebnik.mos.ru/​material/​cb7d71a7-d539-49af-a8d7-f186dace09bb]] Виртуальная лаборатория:​ "​Теория вероятностей"​. 
 +  * [[https://​uchebnik.mos.ru/​material/​a78e5946-3746-441c-8645-42005d56b1f0]] Как пользоваться лабораторией «Теория вероятностей» 
 +  * [[https://​uchebnik.mos.ru/​material/​684c4222-349f-47aa-a2c6-0e6dec8313bd]] Математический Конструктор  
 +  * [[https://​uchebnik.mos.ru/​material/​684c4222-349f-47aa-a2c6-0e6dec8313bd?​menuReferrer=catalogue]] Математический Конструктор  
 +  * [[https://​disk.yandex.ru/​d/​iNVgpsBiJqXEQQ]] КИБЕР-БОЙ ИТ 5 ЭТАП: ПРЕЗЕНТАЦИЯ,​ ЗАДАНИЕ,​ КРИТЕРИИ ОЦЕНКИ 
 +  * [[https://​proproprogs.ru/​files/​balak_scool_tp.pdf]] - "​Теория вероятностей для школьников",​ Балакирев 
 +  * [[https://​stepik.org/​course/​136024/​syllabus]] Добрая теория вероятностей (для ЕГЭ) с Сергеем Балакиревым 
 +  * [[https://​stepik.org/​join-class/​f17c4c4039e87ea9a32a1e9bdeabd103b3d8c334]] - Задачи по теории вероятности для 10и: Добрая теория вероятностей (для ЕГЭ) с Сергеем Балакиревым 
 +  * [[https://​intepra.ru/​oge/​bernoulli_distribution.html]] - теория 
 +  * https://​uchebnik.mos.ru/​material/​b351783a-bb36-4200-96a0-5ea89bb67f23?​sharing_key=29483cc3-476b-4022-a606-736f3b0da041 результат 
 + 
 +==== Вспомогательные ресурсы:​ ==== 
 +  * [[https://​wiki.amperka.ru/​%D0%BA%D0%BE%D0%BD%D1%81%D0%BF%D0%B5%D0%BA%D1%82-arduino:​%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5-%D0%B7%D0%B0%D0%BA%D0%BE%D0%BD%D1%8B-%D1%8D%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%B8%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B0 | Основные законы электричества]] 
 +  * [[https://​wiki.amperka.ru/​%D0%BA%D0%BE%D0%BD%D1%81%D0%BF%D0%B5%D0%BA%D1%82-arduino:​%D1%81%D0%B2%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D0%BE%D0%B4| Светодиод. Характеристики. Схема включения. Подбор резистора]] 
 +  * [[https://​wiki.amperka.ru/​%D0%BA%D0%BE%D0%BD%D1%81%D0%BF%D0%B5%D0%BA%D1%82-arduino:​%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D1%8C-%D0%BD%D0%B0%D0%BF%D1%80%D1%8F%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F| Делитель напряжения]] 
 +  * [[https://​wiki.amperka.ru/​%D0%BA%D0%BE%D0%BD%D1%81%D0%BF%D0%B5%D0%BA%D1%82-arduino:​%D0%BA%D0%BD%D0%BE%D0%BF%D0%BA%D0%B0 | Кнопка. Дребезг. Схема подключения]] 
 +  * [[https://​wiki.amperka.ru/​%D0%BA%D0%BE%D0%BD%D1%81%D0%BF%D0%B5%D0%BA%D1%82-arduino:​%D0%BA%D0%BD%D0%BE%D0%BF%D0%BE%D1%87%D0%BD%D1%8B%D0%B9-%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%D1%82%D0%B5%D0%BB%D1%8C?​s[]=%D0%B4%D1%80%D0%B5%D0%B1%D0%B5%D0%B7%D0%B3 | Учебный пример:​ кнопочный переключатель]]  
 +  * [[https://​wiki.amperka.ru/​%D0%B4%D0%B8%D1%81%D0%BF%D0%BB%D0%B5%D0%B8-%D0%B8-%D0%B8%D0%BD%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B:​7-%D1%81%D0%B5%D0%B3%D0%BC%D0%B5%D0%BD%D1%82%D0%BD%D1%8B%D0%B9-%D0%B8%D0%BD%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80 | Семисегментный индикатор]] 
 +  * [[https://​wiki.amperka.ru/​%D0%BA%D0%BE%D0%BD%D1%81%D0%BF%D0%B5%D0%BA%D1%82-arduino:​%D0%BF%D1%8C%D0%B5%D0%B7%D0%BE%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D0%BA | Пьезодинамик]] 
 + 
 +==== Справочник по функциям C++ для Arduino ==== 
 +  * [[https://​docs.arduino.cc/​language-reference/#​functions]] 
 +  * [[https://​docs.arduino.cc/​language-reference/​en/​functions/​advanced-io/​tone/​]] - функция для подключения кнопки 
 + 
 +==== Виртуальные модели в Workwi ==== 
 + 
 +  * https://​wokwi.com/​projects/​415154760578950145 модель секундомера (недостаток:​ нет управляющей кнопки и токоограничительных резисторов) 
 +  * [[https://​wiki.amperka.ru/​%D0%BA%D0%BE%D0%BD%D1%81%D0%BF%D0%B5%D0%BA%D1%82-arduino:​%D1%81%D0%B5%D0%BA%D1%83%D0%BD%D0%B4%D0%BE%D0%BC%D0%B5%D1%80 | Секундомер]] 
 +  * [[https://​wokwi.com/​projects/​new/​arduino-uno]] Симулятор Arduino Uno 
 +  * [[https://​uchebnik.mos.ru/​material/​534755?​sharing_key=a415b923-67ad-4069-a543-131d47f214db| вариант]] 
 +  * https://​wokwi.com/​projects/​415170812109939713 
 +====== Программирование микроконтроллеров на Arduino ====== 
 +  * https://​stepik.org/​course/​69511/​syllabus Arduino в online. Быстрый старт !!! 
 +  * [[https://​stepik.org/​join-class/​75e25fb16581d1a1645b8201775699f76f3370b7 | Ссылка на учебный класс. Знакомство с платформой ARDUINO. 10И]] 
 +  * [[https://​wokwi.com/​projects/​new/​arduino-uno]] **Симулятор Arduino Uno** 
 +  * https://​wiki.amperka.ru/​ 
 +  * https://​wiki.amperka.ru/​%D0%BA%D0%BE%D0%BD%D1%81%D0%BF%D0%B5%D0%BA%D1%82-arduino:​%D0%BC%D0%B0%D1%8F%D1%87%D0%BE%D0%BA 
 +  * https://​www.arduino.cc/​reference/​cs/​language/​structure/​control-structure/​switchcase/​ 
 + 
 +====== Бегущие огни ====== 
 + 
 + 
 +<code c++> 
 +int pin_0 = 7; 
 +int n = 0; 
 +void setup() 
 +
 +  pinMode(7, OUTPUT); 
 +  pinMode(6, OUTPUT); 
 +  pinMode(5, OUTPUT); 
 +
 +  
 +void loop() 
 +
 +digitalWrite(pin_0 - n, 1); 
 +  delay(100);​ 
 +digitalWrite( pin_0 - n, 0); 
 + n = (n + 1) % 3; 
 +delay(900);​ 
 +
 +</​code>​ 
 + 
 +====== Подключение кнопки с учетом борьбы с дребезгом кнопок ====== 
 + 
 +  * [[https://​wiki.amperka.ru/​%D0%BA%D0%BE%D0%BD%D1%81%D0%BF%D0%B5%D0%BA%D1%82-arduino:​%D0%BA%D0%BD%D0%BE%D0%BF%D0%BE%D1%87%D0%BD%D1%8B%D0%B9-%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%D1%82%D0%B5%D0%BB%D1%8C | Эксперимент 10. Кнопочный переключатель]] 
 +  * [[https://​www.perplexity.ai/​search/​ty-v-roli-uchitelia-informatik-u4EemCNTTDaPpv4DwDnA3w | Эксперименты с кнопкой]] 
 + 
 +<code C++> 
 +// switch...case 
 +switch (var) { 
 +  case 1: 
 +    //do something when var equals 1 
 +    break; 
 +  case 2: 
 +    //do something when var equals 2 
 +    break; 
 +  default: 
 +    // if nothing else matches, do the default 
 +    // default is optional 
 +    break; 
 +
 + 
 +</​code>​ 
 + 
 +  * [[https://​wokwi.com/​projects/​4213320841703188490]] многофункциональная кнопка (ссылка закодирована) 
 +  * https://​www.circuitlab.com/​editor/#?​id=7pq5wm&​from=homepage  
 + 
 +====== Дополнительные учебные курсы по Arduino ====== 
 +  * https://​stepik.org/​course/​55014/​syllabus 
 +  * https://​stepik.org/​course/​102886/​syllabus 
 +  * https://​stepik.org/​course/​108374/​syllabus 
 + 
 +===== Программирование ТРИК на Python!!! ===== 
 +  * https://​trikset.com/​products/​trik-controller 
 +  * https://​help.trikset.com/​trik/​programming-code справочная документация 
 +  * https://​trikset.com/​education/​methodical методические рекомендации 
 +  * {{ ::​9-4trik_робототехника_01.pdf | Знакомство с Trik Studio}} 
 +  * УРОКИ:​ 
 +      *   {{ :​trik_studio_01.pdf | 1. Знакомство с Trik Studio. ​ Управление моторами на языке Python}} 
 +      *   {{ :​trik_studio_02.pdf | 2. Обратная связь. Энкодеры}} 
 +      *   {{ ::​trik_studio_03.pdf | 3. Обратная связь. Датчик расстояния}} 
 +      *   {{ :​trik_studio_04.pdf | 4. Регуляторы}} 
 +      * {{ :​trik_studio_05.pdf | 5. Движение по линии}} 
 +  * {{ :​trik_py.zip | Практика. Задачи }} 
 + 
 +===== Виртуальные лаборатории МЭШ ===== 
 +  * https://​uchebnik.mos.ru/​material/​3697?​menuReferrer=catalogue Моделирование роботов 
 + 
 +====== ​Алгоритмы и структуры данных на языке программирования Python ======
  
 ===== Ресурсы ===== ===== Ресурсы =====
Строка 61: Строка 238:
  
 <code Python> <code Python>
 +# Автор: Леднёв Алексей
 a = [i for i in input().split()] a = [i for i in input().split()]
 k = len(a)*2-1 k = len(a)*2-1
Строка 74: Строка 252:
     ​     ​
 '''​ '''​
 +input
 1 2 3 1 2 3
 +output
 1 1 1 1 1 1 1 1 1 1
 1 2 2 2 1 1 2 2 2 1
Строка 81: Строка 261:
 1 1 1 1 1 1 1 1 1 1
 '''​ '''​
 +</​code>​
 +
 +<code Python>
 +n = int(input())
 +r = sum([int(input()) for i in range(n)])
 +print(f'​{["​Foo",​ "​Bar"​][r<​0]} & {["​Qux",​ "​Baz"​][r%2 == 0]}')
 </​code>​ </​code>​
 ==== Codingame ==== ==== Codingame ====
Строка 106: Строка 292:
   - https://​www.codingame.com/​clashofcode/​clash/​388174749d606a3990891ea0c15dd097e45144e   - https://​www.codingame.com/​clashofcode/​clash/​388174749d606a3990891ea0c15dd097e45144e
   - https://​www.codingame.com/​clashofcode/​clash/​38817641f823dea30a9923f1fcd0915a4713944   - https://​www.codingame.com/​clashofcode/​clash/​38817641f823dea30a9923f1fcd0915a4713944
 +
 +**22.10.2024**
 +
 +  - https://​www.codingame.com/​clashofcode/​clash/​38882773ed69ec08c3c131b4ea2deb3585dd3b7
 +  - https://​www.codingame.com/​clashofcode/​clash/​3888303b4593ea9edcae98ca9f4269ed98d2290
 +  - https://​www.codingame.com/​clashofcode/​clash/​3888322b2ac7ff74811ffdab82f1d111483d91a
 +
 +**24.10.2024**
 +
 +  - https://​www.codingame.com/​clashofcode/​clash/​389081723b18d5e80676437434bb8c5da3fc51f
 +  - https://​uchebnik.mos.ru/​material/​607641?​sharing_key=0f8055c9-7135-4651-b22f-6c68bf58df64 !!!
 +
 +<code c++>
 +
 +const int LM_s1 = 10; // левый мотор вход 1
 +const int LM_s2 = 9; // левый мотор вход 2
 +const int RM_s1 = 5; // правый мотор вход 1
 +const int RM_s2 = 6; // правый мотор вход 2
 +
 +int led_pin = 13;
 +// Укажем пины для подключения УЗ датчика
 +int trigPin = 12; 
 +int echoPin = 11;  ​
 +int s_for_obj = 0; 
 +// текущее состояние системы
 +int state = 0; // начальное состояние
 +
 +void setup(){
 + ​Serial.begin(9600);​
 + 
 + //​правый
 +    pinMode(RM_s1,​ OUTPUT);
 +    pinMode(RM_s2,​ OUTPUT);
 + //​левый
 +    pinMode(LM_s1,​ OUTPUT);
 +    pinMode(LM_s2,​ OUTPUT);
 +// УЗ
 +    pinMode(trigPin,​ OUTPUT); ​
 +    pinMode(echoPin,​ INPUT); ​
 +// светодиод
 +    pinMode(led_pin,​ OUTPUT);
 +}
 +
 +
 +int dist() // функция для вычисления расстояния
 +{
 +  int t,s; // локальные переменные время, расстояние
 +  // установить высокий уровень на пине Trig
 +  digitalWrite(trigPin,​ 1);
 +  // подождать 10 мс 
 +  delay(10/​16); ​
 +  digitalWrite(trigPin,​ 0); 
 +  // узнаем время
 +  t = pulseIn(echoPin,​ 1); 
 +  // вычисляем расстояние
 +  s = t * 0.034/​2; ​
 +  return (s);
 +}
 +
 +
 +
 +void loop() {
 +    s_for_obj = dist();
 +    //​Serial.println(s_for_obj );// вывод измеренного расстояния в окно сообщений
 +    //​delay(20/​16); ​
 +Serial.println(state);​
 +switch (state) {
 +  case 0: // начальное состояние:​ вперёд до первого препятствия
 +  case 2: // после первого поворота:​ вперёд до второго препятствия
 +    if (s_for_obj == 0 || s_for_obj > 68){
 +         ​moveForward();​
 +    } else {
 +         ​stopMotors();​
 +         state ++;
 +    }
 +    break;
 +
 +  case 1: // перед первым препятствием:​ левый поворот
 +  case 3: // перед вторым препятствием:​ левый поворот
 +    turnLeft();
 +    delay(2970/​16);​
 +    state ++;
 +    stopMotors();​
 +    break;
 +
 +  case 4: // после второго поворота:​ прямолинейный путь до остановки
 +    moveForward();​
 +    delay(23000/​16);​ // время прямолинейного движения до остановки
 +    state ++;
 +    stopMotors();​
 +    break;
 +
 +  case 5: // после остановки на площадке:​ включить светодиод на 4 секунды
 +    digitalWrite(led_pin,​ 1);
 +    delay(4000/​16);​
 +    digitalWrite(led_pin,​ 0);
 +    state ++;
 +    break;
 +  case 6: // 
 +    stopMotors();​
 +    break;
 +  default:
 +     ​stopMotors();​
 +  break;
 + }
 +}
 +
 +void moveForward() {
 +     //​Serial.println("​up"​);​
 +    digitalWrite(LM_s1,​ 1);
 +    digitalWrite(LM_s2,​ 0);
 +    digitalWrite(RM_s1,​ 1);
 +    digitalWrite(RM_s2,​ 0);
 + ​delay(20);​
 +}
 +
 +void moveBackward() {
 +    //​Serial.println("​down"​);​
 +
 +    digitalWrite(LM_s1,​ 0);
 +    digitalWrite(LM_s2,​ 1);
 +    digitalWrite(RM_s1,​ 0);
 +    digitalWrite(RM_s2,​ 1);
 + ​delay(20);​
 +}
 +
 +void turnLeft() {
 +    digitalWrite(LM_s1,​ LOW);
 +    digitalWrite(LM_s2,​ HIGH);
 +    digitalWrite(RM_s1,​ HIGH);
 +   ​digitalWrite(RM_s2,​ LOW);
 + ​delay(20);​
 +}
 +
 +void turnRight() {
 +    digitalWrite(LM_s1,​ HIGH);
 +    digitalWrite(LM_s2,​ LOW);
 +    digitalWrite(RM_s1,​ LOW);
 +   ​digitalWrite(RM_s2,​ HIGH);
 + ​delay(20);​
 +}
 +
 +void stopMotors() {
 +    digitalWrite(LM_s1,​ LOW);
 +    digitalWrite(LM_s2,​ LOW);
 +    digitalWrite(RM_s1,​ LOW);
 +   ​digitalWrite(RM_s2,​ LOW);
 + //​delay(20);​
 +}
 +
 +</​code>​
 +
 +
 +
 +====== РОБОТ МФТИ ======
 +
 +[[http://​judge.mipt.ru/​mipt_cs_on_python3/​labs/​lab2.html]] РОБОТ
 +  * {{ :​robot-tasks-master_.zip |}} - Архив с файлами робота (модификация:​ в файле pyrob/​api.py добавлен,​ приведенный ниже код, упрощающий написание команд (инструкций) управления роботом)
 +
 +<code python>
 +ml = move_left #​Пройти n клеток влево (по умолчанию n = 1)
 +mr = move_right #​Пройти n клеток вправо (по умолчанию n = 1)
 +mu = move_up ​ #​Пройти n клеток вверх (по умолчанию n = 1)
 +md = move_down #​Пройти n клеток вниз (по умолчанию n = 1)
 +wu = wall_is_above #если сверху стена, возвращает True, иначе — False
 +wd =  wall_is_beneath #если снизу стена, возвращает True, иначе — False
 +wl = wall_is_on_the_left #если слева стена, возвращает True, иначе — False
 +wr = wall_is_on_the_right #если справа стена, возвращает True, иначе — False
 +fill = fill_cell #​Закрасить текущую клетку
 +#​cell_is_filled #​Возвращает True, если текущая клетка закрашена
 +#mov #​Поместить значение v в регистр r
 +
 +</​code>​
 +
 +**Пример решения первой задачи**
 +
 +{{:​2023-10-15_22_50_21-window.png?​nolink|}}
 +
 +<code python>
 +#​!/​usr/​bin/​python3
 +
 +from pyrob.api import *
 +
 +
 +@task
 +def task_1_1():
 +    #pass
 +    mr(2) # Пройти 2 клетки вправо или: move_right(2)
 +    md(1) # Пройти 1 клетку вниз или: ​  ​move_down(2)
 +
 +
 +if __name__ == '​__main__':​
 +    run_tasks()
 +</​code>​
 +
 +
10i_2025_algo.1729257939.txt.gz · Последние изменения: 2024/10/18 16:25 — super_admin