Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93

Проблемы с решением геометрической задачи с использованием python

15.04.2020, 22:02. Показов 2681. Ответов 6

Студворк — интернет-сервис помощи студентам
Добрый вечер! Решаю вот такую задачу: На плоскости со своими координатами заданы n точек. Найдите площадь наименьшего квадрата со сторонами параллельными осям координат, которые содержат внутри себя эти точки
вот таким кодом:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import math
sch=int(input())
sv=[0, -10000000000]
sn=[0, 10000000000]
sp=[-10000000000, 0]
sl=[10000000000, 0]
for i in range(sch):
    a, b = map(int,input().split())
    if a>sp[0]:
        sp[0]=a
        sp[1]=b
    if a<sl[0]:
        sl[0]=a
        sl[1]=b
    if b>sv[1]:
        sv[0]=a
        sv[1]=b
    if b<sn[1]:
        sn[0]=a
        sn[1]=b
if sp[0]<0 and sl[0]<0:
    rx=abs(sl[0])-abs(sp[0])
if sp[0]>0 and sl[0]>0:
    rx=sp[0]-sl[0]
if sp[0]>0 and sl[0]<0:
    rx=abs(sl[0])+sp[0]
if sv[1]<0 and sn[1]<0:
    ry=abs(sv[1])-abs(sn[1])
if sv[1]>0 and sl[1]>0:
    ry=sv[1]-sn[1]
if sv[1]>0 and sn[1]<0:
    ry=abs(sn[1])+sv[1]
if rx>=ry:
    print(rx**2)
else:
    print(ry**2)
Код должен проходить тесты:
1
10 10
Вывод: 0
3
5 4
2 1
7 3
Вывод 25
Эти тесты код проходит, но не проходит последний:
2
0 0
30000 30000
Вывод: 900000000
Подскажите, пожалуйста, в чём может быть ошибка, и, если можно, укажите это в моём коде. И, если не тяжело, помогите, пожалуйста в компиляции сего чуда на Pascal
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.04.2020, 22:02
Ответы с готовыми решениями:

Проблемы с решением задачи на C++
Возникли проблемы с решением задачи с использованием цикла for.

Возникли проблемы с решением задачи
Не могу решить и составить таблицу к этой задаче, скрин задачи я приложил правила п 5.18

Есть проблемы с решением задачи
Ни для кого не секрет, что студенты ОНУ – самые ярые футбольные болельщики. Но мало кому известно, что Аскольд Портвейник, студент кафедры...

6
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,149
Записей в блоге: 43
16.04.2020, 15:38
Лучший ответ Сообщение было отмечено Anacoder как решение

Решение

Anacoder, ну так по идее площадь такого квадрата - это произведение разностей максимального и минимального значений одноименных координат. Ну то есть, берешь x всех точек, находишь наибольшее значение, вычитаешь из него наименьшее и получаешь разность по x. После этого с y делаешь то же самое и результаты перемножаешь. Если сделаешь так, то последний тест будет пройден, а вот насчет второго я совсем не уверен. Непонятно откуда там 25, когда по идее должно быть 15.

Добавлено через 16 минут
Хотя, если нужен именно квадрат, а не прямоугольник, тогда да.

Добавлено через 17 минут
Python
1
2
3
4
5
6
7
8
9
10
def getsq(points):
    return max(map(lambda l: max(l) - min(l),[
        [i for i, j in points],
        [j for i, j in points]
    ]))**2
 
 
print getsq([(10,10)])
print getsq([(5,4), (2,1), (7,3)])
print getsq([(0,0), (30000,30000)])
1
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93
16.04.2020, 20:36  [ТС]
diadiavova, премного благодарен, что прониклись моей проблемой. Я уж думал, что храбрых людей давно не сыщешь ни одного. Я питонист начинающий, посему не совсем понял назначение Вашего куска кода. Как им пользоваться? Сам по себе он выдаёт ошибку

Добавлено через 13 минут
Код с поправочкой
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import math
sch=int(input())
sv=[0, -10000000000]
sn=[0, 10000000000]
sp=[-10000000000, 0]
sl=[10000000000, 0]
for i in range(sch):
    a, b = map(int,input().split())
    if a>sp[0]:
        sp[0]=a
        sp[1]=b
    if a<sl[0]:
        sl[0]=a
        sl[1]=b
    if b>sv[1]:
        sv[0]=a
        sv[1]=b
    if b<sn[1]:
        sn[0]=a
        sn[1]=b
if sp[0]<0 and sl[0]<0:
    rx=abs(sl[0])-abs(sp[0])
if sp[0]>0 and sl[0]>0:
    rx=sp[0]-sl[0]
if sp[0]>0 and sl[0]<0:
    rx=abs(sl[0])+sp[0]
if sv[1]<0 and sn[1]<0:
    ry=abs(sv[1])-abs(sn[1])
if sv[1]>0 and sn[1]>0:
    ry=sv[1]-sn[1]
if sv[1]>0 and sn[1]<0:
    ry=abs(sn[1])+sv[1]
if rx>=ry:
    print(rx**2)
else:
    print(ry**2)
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,149
Записей в блоге: 43
16.04.2020, 22:12
Цитата Сообщение от Anacoder Посмотреть сообщение
Я питонист начинающий, посему не совсем понял назначение Вашего куска кода. Как им пользоваться? Сам по себе он выдаёт ошибку
Я вообще не питонист (так раньше немного баловался, но дальше дело не пошло) и в раздел забрел случайно. Но именно из-за того, что я не питонист, я не стал бы выкладывать код, предварительно его не проверив. Код рабочий, запускается именно в таком виде и выдает ожидаемый результат. Его можно вставить, например сюда, нажать Run и получить нужный результат. Я там не зарегистрирован, так что дать ссылку на страницу с уже вставленным кодом не могу )).
Пользоваться кодом предельно просто: функция getsq принимает список кортежей, каждый из которых содержит координаты одной точки, возвращает функция искомую площадь квадрата. Последние три строчки прекрасно иллюстрируют ее применение как раз на вышеприведенных примерах точек.
0
Заяц, просто Заяц.
 Аватар для Fury67
666 / 280 / 156
Регистрация: 12.11.2017
Сообщений: 882
16.04.2020, 22:17
diadiavova, у вас там маленькая ошибочка в коде. Вы забыли скобки.
Python
1
2
3
print(getsq([(10, 10)]))
print(getsq([(5, 4), (2, 1), (7, 3)]))
print(getsq([(0, 0), (30000, 30000)]))
1
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,149
Записей в блоге: 43
16.04.2020, 22:26
Цитата Сообщение от Fury67 Посмотреть сообщение
у вас там маленькая ошибочка в коде. Вы забыли скобки.
Просто я имел дело только с версией 2.7, а во "вторых" питонах print - это инструкция, а не функция и скобок не требует. Видимо стоило об этом упомянуть ))
0
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,758
16.04.2020, 22:29
Python
1
2
x,y=zip(*[(5,0), (2,1), (7,3)])
ans=max(max(x)-min(x), max(y)-min(y))**2
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.04.2020, 22:29
Помогаю со студенческими работами здесь

Проблемы с решением. Python. Чехарда с кузнечиками
День добрый. Вот уже 3-й день пытаюсь решить задачу, решил, но не до конца. Прошло 4/6 тестов, какие тесты-неизвестно/ Вот ее условие:...

Проблемы с решением. Python. Порядочные числа
Здравствуйте. Нашел решение, но не прошел все тесты. Прошу вас помочь! Вот условие У Миши развитое эстетическое чувство. Он...

Проблемы с решением кубического уравнения с использованием формулы Кардано
Я делаю задание к универу, а именно пытаюсь подготовить программу вычисления корней кубического уравнения. Три дня сидел над этой задачей,...

Подскажите с решением на Абрамова на Python 3 (с использованием процедур)
Как бы не старалась никак не могу осилить

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru