Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 17, 2017 18:37:41

dzen
Зарегистрирован: 2017-04-17
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

pythontutor.ru - помощь по задачам

Условие
Шахматный слон ходит по диагонали. Даны две различные клетки шахматной доски, определите, может ли слон попасть с первой клетки на вторую одним ходом.

 x1 = int(input())
y1 = int(input())
x2 = int(input())
y2 = int(input())
if x2 + x1 == y2 + y1:
    print('YES')
elif x2 - x1 == y2 + y1:
    print('YES')
elif x2 - x1 == y2 - y1:
    print('YES')
elif x2 + x1 == y2 - y1:
    print('YES')
elif x1 + y1 == x2 + y2:
    print('YES')
else:
    print('NO')
НЕ проходит один тест,
7
4
2
5
Какое исключение не хватает?

Отредактировано FishHook (Апрель 17, 2017 18:55:37)

Офлайн

#2 Апрель 17, 2017 19:01:24

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

pythontutor.ru - помощь по задачам

dzen
Предлагаю поразмышлять иначе. Слон ходит по диагонали. По диагонали чего? Очевидно, что по диагонали квадрата. Вам надо проверить, являются ли координаты вершинами квадрата. Для этого достаточно сравнить равенство вертикальной и горизонтальной сторон. Длина стороны вычисляется как разность координат. Длину вертикальной стороны получим разностью вертикальных координат, горизонтальной - горизонтальных. Итого - одно математическое вычисление.



Офлайн

#3 Апрель 17, 2017 19:06:03

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

pythontutor.ru - помощь по задачам



Офлайн

#4 Апрель 17, 2017 19:48:30

dzen
Зарегистрирован: 2017-04-17
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

pythontutor.ru - помощь по задачам

Благодарю за елегантное решение

Офлайн

#5 Апрель 18, 2017 01:49:11

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

pythontutor.ru - помощь по задачам

  
if abs(x1 - x2) == abs(y1 - y2):
    print('YES')
else:
    print('NO')

Наверняка тесты будут подавать разные расположения точек.



Отредактировано py.user.next (Апрель 18, 2017 01:50:47)

Офлайн

#6 Апрель 20, 2017 00:37:51

dzen
Зарегистрирован: 2017-04-17
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

pythontutor.ru - помощь по задачам

Вот еще одна загадка:

Улитка ползет по вертикальному шесту высотой h метров, поднимаясь за день на a метров, а за ночь спускаясь на b метров. На какой день улитка доползет до вершины шеста?

Программа получает на вход натуральные числа h, a, b.

Программа должна вывести одно натуральное число. Гарантируется, что a>b.

Отредактировано dzen (Апрель 20, 2017 00:38:20)

Офлайн

#7 Апрель 20, 2017 01:00:50

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

pythontutor.ru - помощь по задачам

От h отнимаешь a, потом считаешь скорость улитки в день a-b, потом считаешь за сколько дней улитка с такой скотостью проползет h-a(округляешь до большего) и добавляешь 1. Итоговая формула: math.ceil((h-a)/(a-b))+1 будет колличество дней за которое улитка доползет до вершины.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Апрель 20, 2017 01:17:18)

Офлайн

#8 Апрель 20, 2017 01:46:23

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

pythontutor.ru - помощь по задачам

PEHDOM
Итоговая формула: math.ceil((h-a)/(a-b))+1
Не, не так просто тут решается. :)

Для h=1 a=3 b=2 получается -1.



Офлайн

#9 Апрель 20, 2017 09:31:53

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

pythontutor.ru - помощь по задачам

py.user.next
Не, не так просто тут решается.
Я в курсе, что при a больше h в два и более раза, результат будет ноль или отрицательным, это решаеться банальной проверкой: если а больше b тогда 1 - иначе считаем по формуле.
Поскольку эта задача учебная, то она не предполагает что а будет болше h, иначе накой ляд тогда даеться b? Разв что перподаватель захочет завалить ученика и начнет придираться…
Это детская задача для детей гдето 6-8 лет. звучит примерно так h=10, a=3, b=2. Нужно решить в уме.
Первое что приходит в голову это тупо посчитать скорость улитки в день(a-b) выходит 1 метр в день, следовательно 10 метров улитка проползет за 10 дней. Что собсвенно неверно. Потому как на восьмой день улитка стартует с отметки в 7м, проползает три метра и достигает вершины. Вниз ей сползать уже ненужно.
Нет конечно можно захерачить модель, и в цикле перемещать “улитку” вверх “днем”, а потом вниз “ночью”, считая к-во дней, и постоянно сверяя пройденое расстояние с высотой, но все банально считается по формуле.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Апрель 20, 2017 09:48:51)

Офлайн

#10 Апрель 20, 2017 10:07:15

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

pythontutor.ru - помощь по задачам

PEHDOM
Это детская задача для детей гдето 6-8 лет
Нет никаких детских задач. Есть улитка, она ползает в космическом корабле, у неё на спине ядерный заряд. Ты говоришь “а пускай она -1 вернёт”. Была же реальная ошибка в F-16, который неправильно летал из-за переполнения переменной.

PEHDOM
Вниз ей сползать уже ненужно.
Это модель улитки. А сама улитка вообще нафиг не нужна. Если бы эта улитка была реальной, можно было бы просто взять эту палку, по которой она ползает, и выбросить в окно с третьего этажа.

В задании ясно сказано, что на h есть только одно ограничение: значение h - натуральное число. А натуральное число - это целое число от 1 до +inf.

(Мы эту задачу тут решали уже года два назад. Я её сейчас распаковал и там у меня тесты все составлены ещё с тех времён. Я прогнал их и они показали, что твой вариант падает на такой комбинации. Тогда пацан тоже запарился решать её правильно и так и не решил. А я её не решил тогда, потому что лень было.)



Отредактировано py.user.next (Апрель 20, 2017 10:08:47)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version