Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/103: Рейтинг темы: голосов - 103, средняя оценка - 4.62
9 / 8 / 2
Регистрация: 08.12.2019
Сообщений: 102

Задача Светофор

26.01.2020, 18:20. Показов 21135. Ответов 21

Студворк — интернет-сервис помощи студентам
Помогите с задачкой

Светофор горит зелёным светом t1 секунд, красным - t2, затем снова загорается зелёный. В момент, когда загорелся зелёный свет, водитель Илья находился на расстоянии P метров от светофора и ехал в его сторону со скоростью V метров в секунду. Если Илья не успевает проехать на зелёный сигнал, он должен полностью остановиться у светофора. Помогите Илье определить, сможет ли он проехать на зелёный свет без остановки, а если нет - за сколько метров до светофора ему нужно начинать тормозить, а также сколько секунд он прождёт у светофора, пока снова загорится зелёный свет. Ускорение, с которым тормозит Илья, равняется A.


Формат ввода

В первой входной строке два числа - t1 и t2, время, которое держатся зелёный и красный сигналы соответственно. Во второй строке записаны три числа - расстояние P до светофора, скорость V и ускорение A. Все числа целые, не превышающие 2*109.

Формат вывода

Программа должна вывести слово Pass, если Илья сможет проехать светофор без остановки. Если он вынужден остановиться, программа должна вывести два числа - расстояние до светофора, где нужно начинать торможение, и время ожидания нового зелёного сигнала. Гарантируется, что в случае необходимости Илья успеет затормозить до светофора. В этом случае каждое число нужно вывести с тремя знаками после запятой.

Пример 1

Ввод Вывод

30 20 Pass

145 5 3

Пример 2

Ввод Вывод

10 70 50.000 67.500

200 20 4

Примечания

Скорость во время торможения выражается как V0 - a*t,
а пройденный путь как , где t - время, прошедшее с момента начала торможения. В момент, когда загорается красный, Илья уже не может проехать светофор.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.01.2020, 18:20
Ответы с готовыми решениями:

Задача Светофор: определить, сколько раз за заданное время загорался красный свет
Вася подошел к перекрестку и увидел, что на светофоре в этот момент загорелся красный свет. Вася залюбовался тем, как четко переключаются...

Светофор
горит только зеленый сигнал; зеленый сигнал мигает; гаснет зеленый, загорается желтый; гаснет желтый, загорается красный; ...

Создание графического интерфейса «Светофор»
Здравствуйте помогите с задачкой, начинающему Создание графического интерфейса «Светофор». Окно приложения содержит три кнопки с...

21
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
27.01.2020, 16:00
Ну так и быть:
Python
1
2
3
4
5
6
7
8
9
10
11
12
# -*- coding: utf-8 -*-
 
def example(t1: int, t2: int, p: int, v: int, a: int) -> str:
    if p / v % (t1 + t2) - t1 < 0:
        return "Pass"
    s = v**2 / (2 * a)
    t = t2 - (p - s) / v % (t1 + t2) + v / a
    return f"{s:.3f} {t:.3f}"
 
 
assert example(30, 20, 145, 5, 3) == "Pass"
assert example(10, 70, 200, 20, 4) == "50.000 67.500"
1
5 / 5 / 0
Регистрация: 14.05.2019
Сообщений: 29
27.01.2020, 17:55
не, валится еще раньше чем мой. Проходит дальше, если заменить строчку
Цитата Сообщение от DmFat Посмотреть сообщение
t = t2 - (p - s) / v % (t1 + t2) + v / a
на t0 = t2 + t1 - ((s - s0) / v0 + v0 / a) % (t1 + t2). Однако на последнем тесте мой код все равно заваливается ):
1
1 / 0 / 1
Регистрация: 11.01.2020
Сообщений: 20
27.01.2020, 20:35
Можете скинуть свой код? Просто мой фейлится на первом же тесте

Добавлено через 1 минуту
Цитата Сообщение от BeginHelloWorld Посмотреть сообщение
не, валится еще раньше чем мой. Проходит дальше, если заменить строчку
на t0 = t2 + t1 - ((s - s0) / v0 + v0 / a) % (t1 + t2). Однако на последнем тесте мой код все равно заваливается ):
Можете скинуть свой код? Просто мой фейлится на первом же тесте
0
9 / 8 / 2
Регистрация: 08.12.2019
Сообщений: 102
27.01.2020, 21:12  [ТС]
Код работает, но только не могу понять почему он при выводе 'Pass' дополнительно выводит другое число. На втором примере корректно всё отрабатывает.

Python
1
2
3
4
5
6
7
8
T, S_V_a  = [float(x) for x in input().split()], [float(x) for x in input().split()]
print ('Pass' if S_V_a[1] * T[0] > S_V_a[0] else
    "%.3f" % ( S_V_a[1] * ( S_V_a[1] / S_V_a[2]) - 0.5 * (
        S_V_a[2] * ( S_V_a[1] / S_V_a[2]) ** 2)), "%.3f" % (
            T[1] -  (( S_V_a[1] * ( S_V_a[1] / S_V_a[2]) - 0.5 * (
                S_V_a[2] * ( S_V_a[1] / S_V_a[2]) ** 2)) / S_V_a[1])
            )
       )
Знаю, знаю, что скажите, лучше не говорите! Формулы вникать не стоит, я сам их после написания через 2 минут с трудом понимал. Проблема скорее всего после else в print. Но какая - не вижу.
Миниатюры
Задача Светофор  
0
2 / 0 / 0
Регистрация: 29.11.2019
Сообщений: 19
27.01.2020, 21:21
Скиньте код в тему, пожалуйста.
Мой валится на пятом тесте
0
1 / 0 / 1
Регистрация: 11.01.2020
Сообщений: 20
27.01.2020, 21:51
Цитата Сообщение от Peter56RUS Посмотреть сообщение
Скиньте код в тему, пожалуйста.
Мой валится на пятом тесте
А у вас какой код?

Добавлено через 10 минут
Цитата Сообщение от abu_chechen Посмотреть сообщение
Код работает, но только не могу понять почему он при выводе 'Pass' дополнительно выводит другое число. На втором примере корректно всё отрабатывает.

Python
1
2
3
4
5
6
7
8
T, S_V_a  = [float(x) for x in input().split()], [float(x) for x in input().split()]
print ('Pass' if S_V_a[1] * T[0] > S_V_a[0] else
    "%.3f" % ( S_V_a[1] * ( S_V_a[1] / S_V_a[2]) - 0.5 * (
        S_V_a[2] * ( S_V_a[1] / S_V_a[2]) ** 2)), "%.3f" % (
            T[1] -  (( S_V_a[1] * ( S_V_a[1] / S_V_a[2]) - 0.5 * (
                S_V_a[2] * ( S_V_a[1] / S_V_a[2]) ** 2)) / S_V_a[1])
            )
       )
Знаю, знаю, что скажите, лучше не говорите! Формулы вникать не стоит, я сам их после написания через 2 минут с трудом понимал. Проблема скорее всего после else в print. Но какая - не вижу.
abu_chechen, проблему с else не нашёл, но вот вам ссылка на переделанный код, а то в дальнейшем у вас было бы compilation error x1000:

https://pastebin.com/TVp4FAfa
0
2 / 0 / 0
Регистрация: 29.11.2019
Сообщений: 19
27.01.2020, 22:04
Немного подправил, но крашается на пятом тесте
Python
1
2
3
4
5
6
7
8
T, S_V_a = [float(x) for x in input().split()], [float(x) for x in input().split()]
if S_V_a[1] * T[0] > S_V_a[0]:
    print('Pass')
else:
    print("%.3f" % (S_V_a[1] * (S_V_a[1] / S_V_a[2]) - 0.5 * (
              S_V_a[2] * (S_V_a[1] / S_V_a[2]) ** 2)), "%.3f" % (
              T[1] - ((S_V_a[1] * (S_V_a[1] / S_V_a[2]) - 0.5 * (S_V_a[2] * (S_V_a[1] / S_V_a[2])
                                                                 ** 2)) / S_V_a[1])))
Добавлено через 4 минуты
Скиньте, пожалуйста, код, если у кого-нибудь больше 5 баллов.
0
2 / 0 / 0
Регистрация: 29.11.2019
Сообщений: 19
27.01.2020, 22:10
Вот мой (не мой, я просто небольшие коррективы внёс) код на 5 из 10 баллов:
Python
1
2
3
4
5
6
7
8
9
10
11
12
def example(t1: int, t2: int, p: int, v: int, a: int) -> str:
    if p / v % (t1 + t2) - t1 < 0:
        return "Pass"
    s = v**2 / (2 * a)
    t = t2 - (p - s) / v % (t1 + t2) + v / a
    return f"{s:.3f} {t:.3f}"
 
 
tt1, tt2 = map(int, input().split())
thelist = input().split()
ss, vv, aa = int(thelist[0]), int(thelist[1]), int(thelist[2])
print(example(tt1, tt2, ss, vv, aa))
0
1 / 0 / 1
Регистрация: 11.01.2020
Сообщений: 20
27.01.2020, 22:11
Цитата Сообщение от Peter56RUS Посмотреть сообщение
Немного подправил, но крашается на пятом тесте
Python
1
2
3
4
5
6
7
8
T, S_V_a = [float(x) for x in input().split()], [float(x) for x in input().split()]
if S_V_a[1] * T[0] > S_V_a[0]:
    print('Pass')
else:
    print("%.3f" % (S_V_a[1] * (S_V_a[1] / S_V_a[2]) - 0.5 * (
              S_V_a[2] * (S_V_a[1] / S_V_a[2]) ** 2)), "%.3f" % (
              T[1] - ((S_V_a[1] * (S_V_a[1] / S_V_a[2]) - 0.5 * (S_V_a[2] * (S_V_a[1] / S_V_a[2])
                                                                 ** 2)) / S_V_a[1])))
Добавлено через 4 минуты
Скиньте, пожалуйста, код, если у кого-нибудь больше 5 баллов.
Попробуй условие else заменить на if - if S_V_a[1] * T[0] <= S_V_a[0]:
0
2 / 0 / 0
Регистрация: 29.11.2019
Сообщений: 19
27.01.2020, 22:55
Цитата Сообщение от CarlJohnson Посмотреть сообщение
Попробуй условие else заменить на if - if S_V_a[1] * T[0] <= S_V_a[0]:
Не, на первом же тесте крашается
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
27.01.2020, 23:19
Цитата Сообщение от abu_chechen Посмотреть сообщение
Все числа целые, не превышающие 2*109.
Ни где не сказано что числа положительные. Может стоит проверить?
0
9 / 8 / 2
Регистрация: 08.12.2019
Сообщений: 102
28.01.2020, 11:57  [ТС]
Переделаный? Что-о я не нашёл там ничего переделанного. Только строку перенесли
0
0 / 0 / 0
Регистрация: 14.01.2020
Сообщений: 2
28.01.2020, 15:20
А если проверить вариант, когда скорость равна нулю. Ноль тоже целое число.
нее, не прокатило
0
12 / 12 / 0
Регистрация: 28.11.2019
Сообщений: 11
28.01.2020, 17:38
[PYTHON]
0
3 / 3 / 0
Регистрация: 28.01.2020
Сообщений: 3
28.01.2020, 17:44
Нужно проверить вариант когда зелёный и красный цвет загораются несколько раз.
1
3 / 3 / 0
Регистрация: 28.01.2020
Сообщений: 3
28.01.2020, 17:54
В примечании пропущено а пройденный путь как
Изображения
 
1
9 / 8 / 2
Регистрация: 08.12.2019
Сообщений: 102
28.01.2020, 21:57  [ТС]
Добавлено через 3 минуты
Цитата Сообщение от Cyber1947740918 Посмотреть сообщение
Нужно проверить вариант когда зелёный и красный цвет загораются несколько раз.
Как ты это себе представляешь? Как это может быть?

Добавлено через 2 минуты
Цитата Сообщение от Cyber1947740918 Посмотреть сообщение
В примечании пропущено а пройденный путь как
Эта формула есть в решении. После else до первой запятой - это всё
формула примечания

вот код:
Python
1
2
"%.3f" % (S_V_a[1] * (S_V_a[1] / S_V_a[2]) - 0.5 * (
              S_V_a[2] * (S_V_a[1] / S_V_a[2]) ** 2)),
Добавлено через 4 минуты
Цитата Сообщение от eaa Посмотреть сообщение
Ни где не сказано что числа положительные. Может стоит проверить?
А разве такое возможно? В данной задаче время не может быть отрицательным числом,
так же как и расстояние.
0
5 / 5 / 0
Регистрация: 14.05.2019
Сообщений: 29
28.01.2020, 22:16
Эммм. Так то так и надо, чтобы свет загорался несколько раз. Зелёный, красный, зелёный и т.д
И число может быть равно 0
0
1 / 0 / 1
Регистрация: 11.01.2020
Сообщений: 20
28.01.2020, 22:37
Вот же blyadskiy 5ый тест все время на нем крашится, у кого больше 5ти баллов по этой задаче
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.01.2020, 22:37
Помогаю со студенческими работами здесь

Задача светофор
from sys import argv n_green=int(argv) n_red=int(argv) t=int(argv) flg=1 while True: if flg&gt;0:

Светофор
Для автоматического регулирования движения на перекрестках ставят светофоры. Наш светофор умный, он умеет подстраиваться под количество...

Светофор
Работа светофора для пешеходов запрограммирована следующим образом, с начала каждого часа, в течение N минут горит зеленый сигнал, затем в...

Светофор
Цикл работы светофора такой: красный (горит a секунд), красный с жёлтым (b секунд), зелёный (c секунд), жёлтый (b секунд). Затем...

Светофор (Зел/Жел/Кр)
Тем уже куча по этому светофору, но все таки. Код рабочий, ровно до того момента пока переменная t не становится больше суммарного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru