Помогите! Скоро у меня экзамен по математике, а я не учился! 1 Часть экзамена заключается в классификации четырехугольника по координатам его вершин, что я, к сожалению, не знаю, как это сделать. 2
Итак, ваша задача - написать программу, которая сделает это для меня, чтобы я не потерпел неудачу!
Вызов
Учитывая, что четыре вершины таковы, что никакие три из них не являются коллинеарными, определяют наиболее конкретную классификацию четырехугольника, образованного этими четырьмя вершинами.
Под «наиболее конкретной классификацией» я подразумеваю, что, хотя все квадраты являются прямоугольниками, если форма является квадратом, вы должны указать, что это квадрат, а не указывать, что это прямоугольник.
вход
Ввод будет дан в виде четырех (x, y) координат. Вы можете принять их как список длиной 4 из списков / кортежей длины 2. В качестве альтернативы вы можете принять входные данные как список x-координат и список соответствующих y-координат.
Например, если моя форма имеет вершины в точках (0, 0)
, (5, 0)
, (6, 1)
и (1, 1)
вы можете принять вход в любом из следующих форматов или что - то подобное:
[(0, 0), (5, 0), (6, 1), (1, 1)]
([0, 5, 6, 1], [0, 0, 1, 1])
Вы можете предположить, что четырехугольник не является самопересекающимся и что точки заданы в правильном порядке (то есть две последовательные точки на входе будут соединены отрезком в четырехугольнике).
Выход
Вам понадобится уникальный вывод для каждого из следующих классов четырехугольников:
- Площадь
- Прямоугольник
- Ромб
- Параллелограмм
- Трапеция / трапеция
- воздушный змей
- четырехугольник
Это может быть точное имя, символ, целое число и т. Д.
правила
- Стандартные лазейки применяются
- Если ваш язык программирования имеет встроенный модуль, который будет выполнять именно эту задачу, этот встроенный модуль не разрешен.
- Разрешены встроенные модули для определения расстояния между двумя точками.
- Разрешены встроенные модули для определения угла между двумя линиями.
На данный момент, если вы знаете все термины, вы готовы начать программирование! (Тестовые случаи в конце)
терминология
Этот раздел для тех, кто нуждается в разъяснении определений различных форм.
Площадь
Четырехугольник является квадратом тогда и только тогда, когда все 4 его стороны равны по длине и каждая пара смежных сторон перпендикулярна (то есть это и прямоугольник, и ромб).
Прямоугольник
Четырехугольник является прямоугольником тогда и только тогда, когда каждая пара смежных сторон перпендикулярна.
Ромб
Четырехугольник является ромбом тогда и только тогда, когда все 4 его стороны равны.
Параллелограмм
Четырехугольник является параллелограммом тогда и только тогда, когда каждая пара противоположных сторон параллельна и каждая пара противоположных углов равна. Оба эти условия подразумевают друг друга, поэтому вам нужно проверить только одно из них.
Трапеция / трапеция
Четырехугольник - это трапеция / трапеция, если и только если она имеет хотя бы одну пару параллельных сторон.
воздушный змей
Четырехугольник - это воздушный змей, если две противоположные пары смежных сторон равны по длине; то есть две смежные стороны равны, а две другие тоже равны.
Тестовые случаи
input as (x, y) * 4 -> full name
[(0, 0), (1, 0), (1, 1), (0, 1)] -> square
[(0, 0), (1, 1), (-1, 3), (-2, 2)] -> rectangle
[(0, 0), (5, 0), (8, 4), (3, 4)] -> rhombus
[(0, 0), (5, 0), (6, 1), (1, 1)] -> parallelogram
[(0, 0), (4, 0), (3, 1), (1, 1)] -> trapezoid/trapezium
[(0, 0), (1, 1), (0, 3), (-1, 1)] -> kite
[(0, 0), (2, 0), (4, 4), (0, 1)] -> quadrilateral
Ссылки (Графический калькулятор Desmos)
Вот ссылки на визуализации каждого из тестовых случаев.
Квадратный
прямоугольник
ромб
параллелограмм
трапеция / трапеция
змей
четырехугольник
Критерии победы
Я не могу принести компьютер на экзамен, очевидно, поэтому мне нужно, чтобы вы написали максимально короткий код, чтобы я мог его запомнить. Мне нужно записать это в поля и запустить его с помощью TryItOffline TM, чтобы ваша программа была настолько маленькой, насколько это возможно!
1 Конечно я действительно сделал: P
2 Конечно я действительно сделал: P