Форум сайта python.su
Задание 1_2:
http://judge.mipt.ru/mipt_cs_on_python3/labs/lab2.html#o2-task-1-2
Я так понял задачу:
Необходимо закрасить (превратить в желтую) одну бирюзовую ячейку и встать на черную точку.
Исходя из этого называю “не закрашенными” именно бирюзовые ячейки.
Все остальные задачи на окрашивание ячеек я выполнил.
Я немного не правильно выразился, fill_cell() - закрашивает ячейку.
cell_is_filled() - определяет “статус” - возвращает true, если ячейка закрашена (желтая) и false, если не закрашена (бирюзовая)
Это можно проверить условием:
@task def task_1_2(): if cell_is_filled(): move_right() else: move_down()
Отредактировано y_c (Окт. 23, 2020 14:41:17)
Прикреплённый файлы: test_fill_true.jpg (36,7 KБ)
Офлайн
y_cВы меня запутали с таким легким заданием)))) Это нужно уметь так)))
Задание 1_2:
def task_1_2(): fill_cell() if cell_is_filled(): move_right() else: move_down()
Офлайн
0ppaДа, верно, теперь все на своих местах - желтые являются “закрашенными”.
Но скажу одно только желтые клетки закрашенные
Отредактировано y_c (Окт. 23, 2020 14:40:01)
Офлайн
У тебя ошибка изначально
y_cif cell_is_filled(): - ты проверяешь закрашена ли ячейка, если она не желтая то тебе выдаст false
@task
def task_1_2():
if cell_is_filled():
move_right()
else:
move_down()
Результатом будет движение “вниз”, т.к. ячейка “белая” и вернула значение “true” - т.е. “закрашена”.
Отредактировано 0ppa (Окт. 23, 2020 14:53:27)
Офлайн
y_c
0ppa
У тебя ошибка изначально
Стоп, стоп.
Я говорю о задаче в моем первом посте:
@task
def task_1_2():
def check_fill():
if cell_is_filled() == False: # проверяем закрашена ли клетка
fill_cell()
for i in range(3):
check_fill()
move_right()
check_fill()
move_down()
move_right()
В ней есть одна бирюзовая (“не закрашенная”, как мы выяснили) ячейка, вот её я и проверяю.
“Проверить cell__is_filled().
Если ячейка не закрашена (бирюзовая, вернула False),
то закрасить (сделать желтой)
и идти дальше на черную точку.”
def task_1_2(): fill_cell() #Закрасить ячейку (сделать желтой) if cell_is_filled(): # если ячейка закрашена move_right() # двигаемся вправо else: move_down() # двигаемся вниз
Отредактировано 0ppa (Окт. 23, 2020 15:14:02)
Офлайн
Я сам перепутал закрашенные и незакрашенные, внёс уже поправки.
y_cВот неправильно ты понял задание. Тема этого блока заданий написана над заданиями “Просто последовательности команд”. То есть никаких проверок там не должно быть. Условия появляются только с третьего задания и тема написана “Условное выполнение”.
Я сразу определился:
1. Мне нужно закрасить одну бирюзовую ячейку, следуя по пути к черной точке.
2. Закрасить ячейки без проверки не входит в условие задачи. Решение просто не будет засчитано.
шагнуть вправо
шагнуть вправо
шагнуть вниз
шагнуть вниз
закрасить ячейку
шагнуть вправо
шагнуть вправо
шагнуть вниз
[guest@localhost pyrob]$ python3 task_2.py
INFO:pyrob:Starting task task_1_2
INFO:pyrob:Task task_1_2 finished: +
INFO:pyrob:Total: 1/1
[guest@localhost pyrob]$
Отредактировано py.user.next (Окт. 23, 2020 16:19:07)
Офлайн
Да, всем спасибо, разобрался поправил у себя код.
Офлайн
py.user.next
py.user.nextЗдравствуйте!
На псевдокоде рабочий код (проверял на реальном)
флаг_искать_проход := да
цикл пока флаг_искать_проход выполнять
флаг_искать_проход := нет
цикл пока справа_нет_стены выполнять
шагнуть вправо
цикл пока снизу_нет_стены выполнять
шагнуть вниз
флаг_искать_проход := да
конец цикла
конец цикла
цикл пока слева_нет_стены выполнять
шагнуть влево
цикл пока снизу_нет_стены выполнять
шагнуть вниз
флаг_искать_проход := да
конец цикла
конец цикла
конец цикла
Офлайн
Alexey_881. Перед входом в каждый новый (неисследованный) ряд робот помнит, что он должен найти проход в этом новом ряде.py.user.next
Задачафлаг_искать_проход := да
цикл пока флаг_искать_проход выполнять
флаг_искать_проход := нет
цикл пока справа_нет_стены выполнять
шагнуть вправо
цикл пока снизу_нет_стены выполнять
шагнуть вниз
флаг_искать_проход := да
конец цикла
конец цикла
цикл пока слева_нет_стены выполнять
шагнуть влево
цикл пока снизу_нет_стены выполнять
шагнуть вниз
флаг_искать_проход := да
конец цикла
конец цикла
конец цикла
Не могли бы вы объяснить алгоритм вашей программы?
Alexey_88Чтобы составить алгоритм, начни с последнего ряда, будто кроме него нет больше рядов.
Я алгоритм себе представлял так:
робот начинает движение влево пока нет стены слева, если есть проход то двигается вниз, если нет прохода то двигается вправо до стены, если в этом случае есть проход то двигается вниз, если же прохода нет, то двигается влево до стены.
Имеется 12 шаров и рычажные весы.
Известно, что один из шаров отличается по весу от остальных, при этом неизвестно, тяжелее он или легче.
Каким образом при помощи лишь трёх взвешиваний найти отличающийся шар?
Отредактировано py.user.next (Дек. 7, 2020 07:59:37)
Офлайн
py.user.next1. получается первый пункт относится к части кода “флаг_искать_проход := да”?
1. Перед входом в каждый новый (неисследованный) ряд робот помнит, что он должен найти проход в этом новом ряде.
py.user.nextЗа это отвечает строка “флаг_искать_проход := нет”?
2. При входе в новый (неисследованный) ряд, ещё до начала исследования ряда, робот запоминает, что он не должен искать проход в следующем новом ряде.
py.user.nextНу тут вроде понятно, это описывается двумя циклами
Поэтому, если робот не найдёт прохода в исследуемом ряде, он остановится у левой стены.
py.user.next
цикл пока справа_нет_стены выполнять
шагнуть вправо
py.user.nextСложновато конечно, но вроде понятно.. Спасибо за ответ!
цикл пока слева_нет_стены выполнять
шагнуть влево
Офлайн