Loading...
+ Нов въпрос
andrei_pl avatar andrei_pl 1 Точки

Functions - More Exercises 2. Center Point

Здравейте!

Някой успя ли да реши тази втора задача? Толкова много комбинации пробвах, че вече се оплетох какво още не съм. Успях да докарам до макс 80 / 100.

На пръв поглед не изглежда нещо сложно, но бая ме измъчи.

Ето и моето най-чисто решение, което е за 80 точки: https://pastebin.com/mp6FdtBZ

 

Edit: В крайна сметка се оказа грешен тест. :D

Тагове:
0
Python Fundamentals 08/02/2021 18:57:23
ramona.g avatar ramona.g 1 Точки

Привет,

И аз получавам 80 / 100 с един неуспешен тест.

Някой намерил ли е решение?

Mоето е: https://pastebin.com/YyK45d4M

 

Благодаря

0
MartinBG avatar MartinBG 4492 Точки

За да мине 3-ти тест в Judge трябва входните координати да се обърнат към цели числа преди да бъде изчислено разстоянието до (0, 0).

Например:

import math


def get_distance(_x1, _y1, _x2, _y2):
    return math.sqrt(math.pow(_x2 - _x1, 2.0) + math.pow(_y2 - _y1, 2.0))


x1 = math.floor(float(input()))
y1 = math.floor(float(input()))
x2 = math.floor(float(input()))
y2 = math.floor(float(input()))

dist1 = get_distance(x1, y1, 0, 0)
dist2 = get_distance(x2, y2, 0, 0)

if dist1 <= dist2:
    print(f"({x1}, {y1})")
else:
    print(f"({x2}, {y2})")

 

0
IvanNankov95 avatar IvanNankov95 8 Точки

След не малка главоблъсканица, открих, че си има математическа формула за това - Euclidean distance formula (Евклидово пространство), която представлява най-общо:

√((x2-x1)**2 + (y2-y1)**2)

И се използва за откриването на разстоянието между 2 точки в координатната система.

При сравняването в случая не е нужно да се използва квадратен корен, тъй като търсим единствено коя е по-близко. Ето и решението:

from math import floor

u_x1, u_y1, u_x2, u_y2 = float(input()), float(input()), float(input()), float(input())

def calculate_distance(def_x1, def_y1, def_x2, def_y2):
    return (def_x2-def_x1)**2 + (def_y2-def_y1)**2

dist_x1y1 = calculate_distance(u_x1, u_y1, 0, 0)
dist_x2y2 = calculate_distance(u_x2, u_y2, 0, 0)

if dist_x1y1 > dist_x2y2:
    print(tuple([floor(u_x2), floor(u_y2)]))
elif dist_x1y1 <= dist_x2y2:
    print(tuple([floor(u_x1), floor(u_y1)]))

 

 

0
sawyer avatar sawyer 3 Точки

Ето моето решение https://pastebin.com/TxMCAx0r

На C#  - Простичко е :)

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.