救命!我的数学考试即将上线,我没有学习!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])
您可以假设四边形不是自相交的,并且点以正确的顺序给出(即,输入中的两个连续点将由四边形中的线段连接)。
输出量
以下四边形的每一个类别都需要一个唯一的输出:
- 广场
- 长方形
- 菱形
- 平行四边形
- 梯形/梯形
- 风筝
- 四边形
这可能是确切的名称本身,一个字符,一个整数等。
规则
- 适用标准漏洞
- 如果您的编程语言具有将执行此确切任务的内置程序,则不允许该内置程序。
- 允许使用内置函数查找两点之间的距离。
- 允许使用内置函数查找两条线之间的角度。
此时,如果您知道所有术语,就可以开始编程了!(测试用例在最后)
术语
本节适用于需要澄清不同形状定义的任何人。
广场
当且仅当四边形的所有边长相等且每对相邻边垂直(即,既是矩形又是菱形)时,四边形才是正方形。
长方形
当且仅当每对相邻边垂直时,四边形才是矩形。
菱形
当且仅当四边形的所有边均相等时,四边形才是菱形。
平行四边形
当且仅当每对相对的边平行且每对相对的角度相等时,四边形才是平行四边形。这两个条件相互暗示,因此您只需要检查其中之一即可。
梯形/梯形
当且仅当四边形具有至少一对平行边时,它才是梯形/梯形。
风筝
如果两对相对的相邻边的长度相等,则四边形为风筝。也就是说,它的两个相邻边相等,另外两个也相等。
测试用例
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