Python Принадлежит ли точка квадрату, повёрнутому на 45% относительно оси координат
Не могу решить задачу:
Даны два действительных числа x и y. Проверьте, принадлежит ли точка с координатами(x,y) заштрихованному квадрату (включая его границу). Если точка принадлежит квадрату, выведите слово YES,иначе выведите слово NO. На рисунке сетка проведена с шагом 1.

Пишу следующий код:
def IsPointInSquere(x, y):
if x ** 2 + y ** 2 <= 2 ** (1/2):
return True
x = float(input())
y = float(input())
if IsPointInSquere(x, y):
print("YES")
else:
print("NO")
выдаёт ошибку. Подскажите что конкретно я не учел в функции? Дописываю:
-1 <= x + y <= 1
не помогает
Ответы (4 шт):
В функции не учел то, что это неправильная формула.
Возьмем крайний случай. Точка лежит в координате (1, 0). Тогда она принадлежит квадрату и функция тоже выдаст True (1 < 1.4142). Всё правильно.
Теперь сдвинем точку совсем чуток, на координату (1, 0.01). Она уже не лежит в квадрате, но функция все равно выдаст True: 1.0001 < 1.4142. Оп, ошибка. И такие ошибки будут в довольном большом диапазоне координат.
Попробуйте
b = False
def IsPointInSquere(x, y):
if x ** 2 + y ** 2 <= 2 ** (1/2):
b = True
return b
x = float(input())
y = float(input())
if IsPointInSquere(x, y):
print("YES")
else:
print("NO")
using System;
namespace lab5zadanie15
{
class Program
{
public static bool IsPointInSquere(double x, double y)
{
if (x * x + y * y <= Math.Pow(2, (1 / 2)))
{
bool b = true;
return b;
}
else return false;
}
static void Main(string[] args)
{
double x = Convert.ToDouble(Console.ReadLine());
double y = Convert.ToDouble(Console.ReadLine());
if (IsPointInSquere(x, y))
{
Console.WriteLine("YES");
}
else
{
Console.WriteLine("NO");
}
}
}
}
Всё тоже самое, но на C#. Вдруг кому-то пригодится.
Как вариант:
x, y = float(input()), float(input())
if abs(x) + abs(y) <= 1:
print("YES")
else:
print("NO")