Конкурс. Программирование.

Автор Proydoha, 22-07-2011, 17:28:47

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

Proydoha

Отослал моё видение седьмого в приват, перенёс восьмое в первое сообщение.

Proydoha

Пытался сегодня вникнуть в суть задания, наткнулся на то, что календарь-то был другим совсем недавно. Его считать или забыть и думать, что пользовались нынешним от начала времён?

Jeka

Цитата: Proydoha от 21-08-2011, 09:45:21
Пытался сегодня вникнуть в суть задания, наткнулся на то, что календарь-то был другим совсем недавно. Его считать или забыть и думать, что пользовались нынешним от начала времён?
ну нужно пользоваться новым календарем конечно! Мы же живем по новому

Sasha

Делаем вид, что календарь всегда был таковым. Продлеваю срок выполнения задания еще на день, до завтра.
skype: ab.sasha

Sasha

Результаты задания #7
Proydoha - 4 балла
Jeka - 2 балла
skype: ab.sasha

Sasha

А теперь быстро все сделали лайк темы
skype: ab.sasha

Sasha

26-08-2011, 17:03:48 #261 Последнее редактирование: 26-08-2011, 17:07:36 от Sasha
И снова к поездам)
Очевидно что направить поезда навстречу друг другу невозможно, так как установив одну программу на оба поезда они будут двигаться в одном направлении. Значит необходимо сделать так, чтобы один поезд догнал другой. Для этого надо заставить двигаться их с разной скоростью. Я решал эту проблему примерно так:
Допустим будем двигать поезда вправо. Соответственно для решения задачи левый поезд должен будет догнать правый. Для этого изначально будем двигать поезда к примеру следующими командами:

right
left
right

Ну и разумеется необходимо эти команды зациклить:

label1:
right
left
right
GOTO label1

Таким образом поезда будут бесконечно двигаться вправо, при этом реально передвигаясь на 1 отрезок вправо за 3 итерации управляющей программы.
Рано или поздно левый поезд достигнет семафора, и это наш шанс ускорить его, которым мы и воспользуемся. Просто напишем другую ветку программы на которую перейдем при попадании на семафор:

label2:
right
right
right
GOTO label2

Таким образом левый поезд теперь будет делать 3 шага вправо за 3 итерации. А напомню правый поезд, не бывший на семафоре, двигается только на 1 шаг вправо за 3 итерации. Таким образом нам удалось сделать так чтобы левый поезд двигался быстрее правого в том же направлении, и рано или поздно он догонит левый поезд и они встретятся. Теперь соберем все рассуждения вместе, в одну программу, которая будет ответом на данное задание:

label1:
RIGHT
LEFT
RIGHT
IF<GOTO label2><GOTO label1>
label2:
RIGHT
RIGHT
RIGHT
GOTO label2

Как я и говорил, задача очень простая, но решить ее тяжело.
skype: ab.sasha

Proydoha

ЦитироватьIF<GOTO label2><GOTO label1>
Что это?

Щас допишу решение восьмого задания. Был фатально занят в последние несколько дней.

Jeka

мда судя по всему я задачу та и не понял.

Sasha

27-08-2011, 11:54:35 #264 Последнее редактирование: 27-08-2011, 11:56:34 от Sasha
Цитата: Proydoha от 27-08-2011, 07:32:38
ЦитироватьIF<GOTO label2><GOTO label1>
Что это?

Щас допишу решение восьмого задания. Был фатально занят в последние несколько дней.
если встретили семафор идемна метку 2, если нет на метку 1.
Цитата: Sasha от 11-08-2011, 20:45:15
IF <оператор если поезд попал на семафор> <если не попал>
skype: ab.sasha

Proydoha

А я-то, дурак, думал IF УСЛОВИЕ <ОПЕРАТОРЫ>

Proydoha

Отправляю. Буду надеяться, что хотя бы половину баллов смогу набрать : )

Sasha

Так впадлу проверять  ;)
skype: ab.sasha

Sasha

Скоро сентябрь. Как я понимаю свободного времени у участников станет меньше. Что делаем с конкурсом?
skype: ab.sasha

Sasha

Результаты задания #8
Jeka - 20 баллов
Proydoha - 20 баллов
skype: ab.sasha