- Python-сообщество
- Уведомления
- #1 Фев. 20, 2019 12:40:37
- Графический исполнитель «Робот»
- Сложная для меня задача
- Закрасить клетки расстояние до стены неизвестно python
- Закрасить клетки расстояние до стены неизвестно python
- Python-сообщество
- Уведомления
- #1 Апрель 2, 2020 22:02:59
- Графический исполнитель «Робот»
- #2 Апрель 3, 2020 01:08:32
- Графический исполнитель «Робот»
- #3 Апрель 3, 2020 01:14:10
- Графический исполнитель «Робот»
- #4 Апрель 10, 2020 10:20:43
- Графический исполнитель «Робот»
- #5 Апрель 10, 2020 23:01:20
- Графический исполнитель «Робот»
- #6 Апрель 11, 2020 19:13:45
- Графический исполнитель «Робот»
- #7 Апрель 12, 2020 21:18:05
- Графический исполнитель «Робот»
- #8 Апрель 13, 2020 01:34:02
- Графический исполнитель «Робот»
- #9 Апрель 13, 2020 12:55:30
- Графический исполнитель «Робот»
- #10 Апрель 13, 2020 15:58:36
- Графический исполнитель «Робот»
Python-сообщество
Уведомления
#1 Фев. 20, 2019 12:40:37
Графический исполнитель «Робот»
hm_dmitry
Вот этот первый fill_up_down() пишем для проверки первой клетки, верно ?
В данном цикле реализован метод итераций.
Метод итераций строится на трёх понятиях: M, P, T.
M — множество элементов цикла
P — предикат выхода из цикла
T — преобразование шага цикла
Тут теория из книжки Кушниренко-Лебедева “Программирование для математиков”
Для решения одной и той же задачи можно совершенно по-разному выбирать M, P и T до написания программы.
То есть можно несколько разных правильных циклов написать для решения одной и той же задачи.
hm_dmitry
Возможно ли все это дело вписать внутрь while ?
Сначала мы делаем так:
1) В качестве множества M мы берём множество всех клеток в ряде;
2) В качестве предиката P(m) мы берём вопрос о клетке “является ли клетка m закрашенной сверху/снизу и последней в ряде?”;
3) В качестве преобразования T(m) мы берём шаг на следующую от m клетку справа и закрашивания пространства над и под ней.
Дальше мы задаёмся вопросом “что будет, если во множестве M будет одна клетка?”, ответ — будет отказ из-за невозможности выполнить шаг вправо при преобразовании T, так как первая клетка не закрашена и P(m) даст ложь. Если же мы её закрасим, то произойдёт выход из цикла, так как P(m) даст истину.
Поэтому устанавливаем m0 = закрашенная клетка
T(m0) = m1, где m1 — закрашенная клетка
T(m1) = m2, где m2 — закрашенная клетка
…
T(m n-1) = m n, где m n — закрашенная клетка, а P(m n) = да
Мы могли бы выбрать другие M, P и T, где преобразование T(m) сначала бы всё закрашивало для клетки m, а потом переходило вправо, а P(m) проверяло бы не является ли текущая клетка последней в ряде. Но тогда нужно было бы закрашивать последнюю клетку сверху/снизу после цикла, потому что цикл бы заканчивался на незакрашенной клетке.
Что лучше, такой вариант или такой, определяется тем, как можно разные алгоритмы присоединять друг к другу. При тех M, P и T, которые я выбрал, мы в конце цикла получаем возможность делать дальше что угодно (возвращаться влево к началу строки, переходить на следующую строку вниз и так далее). Если же закончить цикл на недокрашенной клетке, то после цикла ты не можешь никуда переходить, а должен сначала всё докрасить и только потом переходить.
Просто представь, что таких рядов, которые нужно обработать, не один, а десяток друг под другом. В таком случае первый вариант выбранных M, P и T предпочтительнее, так как после окончания цикла ты свободен для любых следующих действий.
Источник
Сложная для меня задача
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Сложная (для меня) вещь!
Здраствуйте! Прошу у Вас помощи дорогие друзья! Мне надо срочно сделать программу на Python 2.6.
Сложная задача(для меня во вском случае).
На паскаль. Через множества. Даны следующие описания переменных: type город=(a,b,c,d,e,f,g,h); .
сложная для меня задача РНР + Мускул
Добрый день, добропорядочное сообщество! Прошу помочь. мне нужно с помощью ПХП+Мускул решить.
Матрицы. Легкая, но сложная задача для меня
Небольшая задача со стандартными алгоритмами. Дана целочисленная матрица A размером n*m.Найти.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
простая задачка , но сложная для меня, помогите плз)
Ввести n строк с консоли. Упорядочить и вывести строки в порядке возрастания их длин, а также.
СЕРЬЕЗНО-СЛОЖНАЯ БАЗА,(для меня) НЕ МОГУ РЕАЛИЗОВАТЬ ( взгляните
Я не программист, так вышло что поручили задание. Помогите кто нибудь заинтересовавшийся помочь в.
Очень сложная задача по Си для избранных
Программе задаётся целое число.Программа должна осуществлять вывод на экран всех переменных.
Задача для тех , кто хочет сломать мозг [Очень сложная]
Завтра экз. , баллов нехватает , если не докажу прогу , то енд. Очень прошу помочь. Вся сложность в.
Источник
Закрасить клетки расстояние до стены неизвестно python
Вот что мне выдает:
Вопрос: что за Error?
Что-то неправильно?
Что?
Далее.
Сточка:
#!/usr/bin/python3
Указывает просто путь, откуда мы вызываем Питон? Но почему он закомментирован?
Строчка @task
Что означает?
Строчка
def task_3_1(): — определение функции. Но где мы вызываем эту функцию?
Строчки
if __name__ == ‘__main__’:
run_tasks()
Как читается?: Если __name__ равна __main__, то вызываем функцию run_tasks().
Но я не вижу, где определены эти функции?
Добавлю команды робота для ясности:
Команды робота Команда Описание move_left(n=1) Пройти n клеток влево (по умолчанию n = 1) move_right(n=1) Пройти n клеток вправо (по умолчанию n = 1) move_up(n=1) Пройти n клеток вверх (по умолчанию n = 1) move_down(n=1) Пройти n клеток вниз (по умолчанию n = 1) wall_is_above() если сверху стена, возвращает True, иначе — False wall_is_beneath() если снизу стена, возвращает True, иначе — False wall_is_on_the_left() если слева стена, возвращает True, иначе — False wall_is_on_the_right() если справа стена, возвращает True, иначе — False fill_cell() Закрасить текущую клетку cell_is_filled() Возвращает True, если текущая клетка закрашена mov(r, v) Поместить значение v в регистр r |
То есть, если стены с трех сторон, то иди в ту сторону, где стены нет.
Как запустить Робота Скачайте и разархивируйте файлы Робота в любое место в своей домашней папке. |
Увидеть условие первой задачи можно, запустив в этой папке из консоли
python3 task_1.py
Решение пишется прямо в файл task_1.py, который можно открыть любым текстовым редактором (например, gedit или PyCharm).
Для быстрой самопроверки ваших решений в этой папке есть файл all_tasks.py, который запустит все программы подряд и проверит их корректность.
А куда второй вопрос дели?
Вот к шестой задачке решение:
Предлагаю эту темку посвятить обсуждению задач в практике МФТИ. Думаю, многие обращаются к ней.
А вот по пятой задачке вопрос, хотя программа отрабатывается.
Правильно ли я понимаю, что строчка
if wall_is_beneath() :
читается так: пока wall_is_beneath() Истина, — делай?
Что тут правильней было While использовать — я уже понял.
Надо: Закрасить клетки. Расстояние до стены не известно. (Идет всегда слева направо).
Я говорю: иди до тех пор, пока не появиться стена справа и если клетка не закрашена, то закрашивай.
Он идет, но клетки не хочет закрашивать. В чем дело?
Источник
Закрасить клетки расстояние до стены неизвестно python
Вот что мне выдает:
Вопрос: что за Error?
Что-то неправильно?
Что?
Далее.
Сточка:
#!/usr/bin/python3
Указывает просто путь, откуда мы вызываем Питон? Но почему он закомментирован?
Строчка @task
Что означает?
Строчка
def task_3_1(): — определение функции. Но где мы вызываем эту функцию?
Строчки
if __name__ == ‘__main__’:
run_tasks()
Как читается?: Если __name__ равна __main__, то вызываем функцию run_tasks().
Но я не вижу, где определены эти функции?
Добавлю команды робота для ясности:
Команды робота Команда Описание move_left(n=1) Пройти n клеток влево (по умолчанию n = 1) move_right(n=1) Пройти n клеток вправо (по умолчанию n = 1) move_up(n=1) Пройти n клеток вверх (по умолчанию n = 1) move_down(n=1) Пройти n клеток вниз (по умолчанию n = 1) wall_is_above() если сверху стена, возвращает True, иначе — False wall_is_beneath() если снизу стена, возвращает True, иначе — False wall_is_on_the_left() если слева стена, возвращает True, иначе — False wall_is_on_the_right() если справа стена, возвращает True, иначе — False fill_cell() Закрасить текущую клетку cell_is_filled() Возвращает True, если текущая клетка закрашена mov(r, v) Поместить значение v в регистр r |
То есть, если стены с трех сторон, то иди в ту сторону, где стены нет.
Как запустить Робота Скачайте и разархивируйте файлы Робота в любое место в своей домашней папке. |
Увидеть условие первой задачи можно, запустив в этой папке из консоли
python3 task_1.py
Решение пишется прямо в файл task_1.py, который можно открыть любым текстовым редактором (например, gedit или PyCharm).
Для быстрой самопроверки ваших решений в этой папке есть файл all_tasks.py, который запустит все программы подряд и проверит их корректность.
А куда второй вопрос дели?
Вот к шестой задачке решение:
Предлагаю эту темку посвятить обсуждению задач в практике МФТИ. Думаю, многие обращаются к ней.
А вот по пятой задачке вопрос, хотя программа отрабатывается.
Правильно ли я понимаю, что строчка
if wall_is_beneath() :
читается так: пока wall_is_beneath() Истина, — делай?
Что тут правильней было While использовать — я уже понял.
Надо: Закрасить клетки. Расстояние до стены не известно. (Идет всегда слева направо).
Я говорю: иди до тех пор, пока не появиться стена справа и если клетка не закрашена, то закрашивай.
Он идет, но клетки не хочет закрашивать. В чем дело?
Источник
Python-сообщество
Уведомления
#1 Апрель 2, 2020 22:02:59
Графический исполнитель «Робот»
Практика: Робот-http://judge.mipt.ru/mipt_cs_on_python3/labs/lab2.html
Условные действия на каждой итерации цикла
Задача №9: task_8_2
Закрасить клетки. Расстояние до стены не известно.
Решением этой задачи является клетки без верха,которые необходимо закрасить.Есть более простой вариант решения У меня получилось вот так:
Отредактировано riomenx (Апрель 2, 2020 22:04:32)
#2 Апрель 3, 2020 01:08:32
Графический исполнитель «Робот»
Romanteg
Добрый вечер. Не могли бы уточнить, допустимо ли такое решение?
Задача 32
Romanteg
Т.е. сперва считаю клеточки, которые необходимо закрасить по Х, затем по Y.
Задание там другое. Надо посчитать жёлтые клетки, которые были на доске изначально. Те жёлтые клетки, которые появились на доске после их закрашивания, считать не надо.
Romanteg
Может только через функцию работает?
Можно и без функции написать код, который с функцией сделан. Но функция там используется, потому что подпрограммы уже пройдены до 32-ой задачи, а функция — это разновидность подпрограммы (есть функции и процедуры, в древних языках типа Паскаля их разделяли синтаксически, сейчас перестали).
В общем, поковыряйся в этой задаче, будет полезно для опыта. Тем более она искусственная и поэтому такая удобная. Дикие задачи, если ты за них возьмёшься, тебе так помогать не будут своей удобностью. Поэтому опыт ты нарабатываешь на учебных задачах, чтобы дикие задачи потом можно было ломать через колено, сами они обычно не поддаются.
#3 Апрель 3, 2020 01:14:10
Графический исполнитель «Робот»
riomenx
Есть более простой вариант решения У меня получилось вот так:
Отредактировано py.user.next (Апрель 3, 2020 01:14:54)
#4 Апрель 10, 2020 10:20:43
Графический исполнитель «Робот»
py.user.next
количество_заполненных = 0
цикл пока справа_нет_стены выполнять
если клетка_заполнена то
количество_заполненных.увеличить на 1
иначе
количество_заполненных = 0
конец если
если количество_заполненных = 3 то
выход из цикла
конец если
шагнуть вправо
конец цикла
Отредактировано F.Dorohov (Апрель 10, 2020 10:21:58)
Прикреплённый файлы:
№29 task_7_7.JPG (90,4 KБ)
#5 Апрель 10, 2020 23:01:20
Графический исполнитель «Робот»
#6 Апрель 11, 2020 19:13:45
Графический исполнитель «Робот»
#7 Апрель 12, 2020 21:18:05
Графический исполнитель «Робот»
Как решить задачу №25: task_2_2 с использованием параметра n функции row_cross
Есть подсказка: “”“Возьмите функцию cross() из предыдущей задачи.
Напишите функцию row_cross(n), которая закрашивает n крестов в ряд.
Используя эту функцию закрасьте клетки, как на рисунке.”“”
На выходе как я понял должно получиться:
move_down()
row_cross(5)
Я не использовал никаких параметров и решил с помощью цикла:
#8 Апрель 13, 2020 01:34:02
Графический исполнитель «Робот»
riomenx
Как решить задачу №25: task_2_2 с использованием параметра n функции row_cross
riomenx
Я не использовал никаких параметров и решил с помощью цикла:
А в следующей задаче нужно десять крестов в ряде закрашивать. Если функцию правильно пишешь, то в следующей заадаче можешь её взять уже готовую из этой задачи. Если функцию пишешь как удобно, то в следующей задаче нужно будет писать новую функцию.
Нужно написать такую функцию, которая может закрасить и пять крестов, и десять крестов, и сто крестов, и миллион крестов. Вот для этого и нужна параметризация. При изменении условий задачи или при появлении новых похожих задач можно будет брать готовые функции, а не писать функции снова.
В данном случае мы взяли готовую функцию “закрасить крест” из 24-ой задачи; мы не писали эту функцию снова, а просто скопировали её. В 26-ой задаче делаем то же самое, только копируем уже две функции и пишем немного кода на их основе, меняя только значение параметра при вызове функции с пятёрки на десятку.
Отредактировано py.user.next (Апрель 13, 2020 01:40:53)
#9 Апрель 13, 2020 12:55:30
Графический исполнитель «Робот»
riomenx
Практика: Робот-http://judge.mipt.ru/mipt_cs_on_python3/labs/lab2.htmlУсловные действия на каждой итерации циклаЗадача №9: task_8_2Закрасить клетки. Расстояние до стены не известно.Решением этой задачи является клетки без верха,которые необходимо закрасить.Есть более простой вариант решения У меня получилось вот так:
#10 Апрель 13, 2020 15:58:36
Графический исполнитель «Робот»
Здравствуйте уважаемые. Вопрос по обсуждаемой тут практике “исполнитель робот”. Прочитал всё ветку не нашёл подсказки.
Задача №16, task_8_22. Не могу понять почему робот не поворачивает в тупике. Хотя условие вроде явно прописано.
Источник