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#. Вдруг кому-то пригодится.

→ Ссылка
Автор решения: arnold

Как вариант:

x, y = float(input()), float(input())

if abs(x) + abs(y) <= 1:
  print("YES")
else:
  print("NO")
→ Ссылка