Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.11.2017
Сообщений: 69

Переложить спичку так, чтобы при поджигании любой спички сгорали все три

15.09.2021, 10:23. Показов 4121. Ответов 10

Студворк — интернет-сервис помощи студентам
Добрый день! Помогите, пожалуйста, решить задачу по Питону: (Нужно ограничить ввод букв пользователем)

Вдоль прямой выложены три спички. Необходимо переложить одну из них так, чтобы при поджигании любой спички сгорали все три. Для того чтобы огонь переходил с одной спички на другую, необходимо чтобы эти спички соприкасались (хотя бы концами).
Требуется написать программу, определяющую, какую из трех спичек необходимо переместить.
Формат ввода
Вводятся шесть целых чисел через пробел: l1, r1, l2, r2, l3, r3 –– координаты первой, второй и третьей спичек соответственно (0 <= l < r <= 100). Каждая спичка описывается координатами левого и правого концов по горизонтальной оси OX.
Выведите номер искомой спички. Если возможных ответов несколько, то выведите наименьший из них. В случае, когда нет необходимости перемещать какую-либо спичку, выведите 0. Если же требуемого результата достигнуть невозможно, то выведите -1.
Пример 1
Ввод
0
2
4
5
3
6
Вывод
1
Пример 2
Ввод
1
2
9
10
12
20
Вывод
3
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.09.2021, 10:23
Ответы с готовыми решениями:

Игра Шары: чтобы выстроенные в ряд три и более шаров одинакового цвета сгорали
Всем привет!! помогите если не сложно((( а то я вообше не понимаю(( В данной игре необходимо переставлять два соседних шара для...

Игра шары. Сделать , чтобы выстроенные в ряд три и более шаров одинакового цвета сгорали?
Подскожите пожалуисто, как зделоть чтобы выстроенные в ряд три и более шаров одинакового цвета сгорали?? За рание спосибо. unit...

Определить, можно ли переложить часть фигурок так, чтобы снова образовался квадрат 8*8
Квадрат размером 8*8 вдоль линейки сетки разбили на несколько фигурок. Написать программу, которая определяет, можно ли переложить часть...

10
enx
 Аватар для enx
1191 / 767 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
15.09.2021, 10:29
Лучший ответ Сообщение было отмечено kindastan как решение

Решение

Python
1
2
3
4
5
6
7
8
9
a, b, c, d, e, f = (int(input()) for i in 'abcdef')
if b >= c and (d >= e or b >= e):
    print(0)
elif (d + b - a >= e) or (d + b - a >= e and b + f - e >= c):
    print(1)
elif b + f - e >= c:
    print(3)
else:
    print(-1)
1
0 / 0 / 0
Регистрация: 26.11.2017
Сообщений: 69
15.09.2021, 10:33  [ТС]
А каким образом можно выдавать сообщение типа "Введите цифры, а не буквы", чтобы при вводе букв пользователю это выпадало
0
enx
 Аватар для enx
1191 / 767 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
15.09.2021, 10:37
Не очень понимаю вопрос, на каком этапе необходима проверка?
Например:

1. Можно проверять каждую переменную.
2. Можно проверить все переменные после их ввода.

Уточни формат.
Представим, в а прилетело что-то типа '2e##+0.12+complex(5+5j)', а ожидали мы int == 2, что по твоей логике должно происходить?
0
0 / 0 / 0
Регистрация: 26.11.2017
Сообщений: 69
15.09.2021, 10:38  [ТС]
При проверке кода выдает следующее:
test1 - Passed
test2 - Passed
test3 - Passed
test4 - Passed
Wrong answer was received for input:
a
b
c
0

Program crash found in your reply:

Задайте координату x для изначальной клетки: Traceback (most recent call last):
File "c:\infSystem\RobotTestsandUtils\Pylint\ task.py", line 5, in <module>
X1 = int(x1)
ValueError: invalid literal for int() with base 10: 'a'

Finally:
Failed

Вот после ввода неправильного значения (не числового), нужно выдавать сообщение "Введите правильное значение переменной". Я полагаю, нужно как-то через try\except это сделать
0
enx
 Аватар для enx
1191 / 767 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
15.09.2021, 10:44
Лучший ответ Сообщение было отмечено kindastan как решение

Решение

Вариант 1, для живого человека, будет работать пока 6 значений не появятся в списке переменных, все будут преобразованы к интам.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
g = []
while len(g) < 6:
    h = input()
    if h.isdigit():
        g.append(int(h))
    else:
        print('Вы ввели не число')
 
a, b, c, d, e, f = (i for i in g)
if b >= c and (d >= e or b >= e):
    print(0)
elif (d + b - a >= e) or (d + b - a >= e and b + f - e >= c):
    print(1)
elif b + f - e >= c:
    print(3)
else:
    print(-1)
Вариант 2, тут суть в следующем, кейс можно сделать только при наличии 6 чисел, на основе которых пройдут ветвления, следовательно роняем все вот так:

Python
1
2
3
4
5
6
7
8
9
10
11
12
try:
    a, b, c, d, e, f = (int(input()) for i in '123456')
    if b >= c and (d >= e or b >= e):
        print(0)
    elif (d + b - a >= e) or (d + b - a >= e and b + f - e >= c):
        print(1)
    elif b + f - e >= c:
        print(3)
    else:
        print(-1)
except:
    print('Пичаль, что-то пошло не так, скорее всего на ввод прилетел не int')
1
0 / 0 / 0
Регистрация: 26.11.2017
Сообщений: 69
15.09.2021, 12:40  [ТС]
Спасибо огромное!!

Добавлено через 1 час 53 минуты
Использовал второй вариант. Линт выдал:
[ERROR]Line 14:0: W0702: No exception type(s) specified (bare-except)

Error(s): 1

Как это подправить можно?
0
enx
 Аватар для enx
1191 / 767 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
15.09.2021, 12:46
Можно, прописать вот так:

Python
1
except ValueError:
Я не знаком с линтом и авторами курса, который ты проходишь, но судя по ошибке - ругается на 'пустой' except.
0
0 / 0 / 0
Регистрация: 26.11.2017
Сообщений: 69
15.09.2021, 12:49  [ТС]
Я понял) Спасибо!
0
0 / 0 / 0
Регистрация: 26.11.2017
Сообщений: 69
16.09.2021, 10:54  [ТС]
По задаче неверные ответы дает при таких входных данных, кстати:
test1 - Passed
test2 - Passed
test3 - Passed
test4 - Passed
test5 - Failed
Received answer:
0
Wrong answer was received for input:
6
7
0
4
5
9
Finally:
Failed
0
0 / 0 / 0
Регистрация: 10.12.2023
Сообщений: 1
10.12.2023, 22:55
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
a, b, c, d, e, f = (int(input()) for i in '123456')
c12=bool((a in range(c,d+1))+(b in range(c,d+1)))
c13=bool((a in range(e,f+1))+(b in range(e,f+1)))
c21=bool((c in range(a,b+1))+(d in range(a,b+1)))
c23=bool((c in range(e,f+1))+(d in range(e,f+1)))
c31=bool((e in range(a,b+1))+(f in range(a,b+1)))
c32=bool((e in range(c,d+1))+(f in range(c,d+1)))
ca=bool(c12+c21)
cb=bool(c23+c32)
cc=bool(c13+c31)
r1=b-a
r2=d-c
r3=f-e
if  ca+cb+cc>1:
    print(0)
elif (r1>=min(abs(e-d),abs(c-f))) or cb:
    print(1)
elif (r2>=min(abs(e-b),abs(a-f))) or cc:
    print(2)
elif (r3>=min(abs(a-d),abs(c-b))) or ca:
    print(3)
else:
    print(-1)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.12.2023, 22:55

Как интервал делений по оси y задать так, чтобы были видны все три графика
Всем привет! Вообщем строю три обратных ВАХ диода на одном графике в зависимости от температуры, они отличаются (минимальный и...

Можно ли сделать так чтобы при возникновении любой ошибки в ASP происходил редирект на требуемую страницу с текстом?
Добрый день! Пользователь проходит авторизацию, ему назначается уровень доступа, потом открывается некий шаблон (main.asp), в тело...

Как сделать так чтобы при изменения условия в while любой код внутри него сразу прекращял выполнятся
есть цикл такого типа while(условие){ if условие 2 if условие 3 ... } как сделать так чтобы при изменения условия в while...

Собрать спички в 5 кучек по 3 спички в кучке, перекладывая спички по одной
Задача 1 В ряд расположены 15 спичек. Требуется собрать их в 5 кучек по 3 спички в кучке, перекладывая спички по одной. Каждую спичку...

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru