Aidez-moi! Mon examen de mathématiques arrive bientôt et je n'ai pas étudié! 1 Une partie de l'examen consiste à classer un quadrilatère en fonction de ses coordonnées de sommets, ce que je ne sais malheureusement pas faire. 2
Donc, votre défi est d'écrire un programme pour le faire pour que je n'échoue pas!
Défi
Étant donné quatre sommets tels qu'aucun d'eux ne soit colinéaire, déterminez la classification la plus spécifique du quadrilatère formé par ces quatre sommets.
Ce que je veux dire par "classification la plus spécifique", c'est que même si tous les carrés sont des rectangles, si la forme est un carré, vous devez indiquer qu'il s'agit d'un carré et non indiquer qu'il s'agit d'un rectangle.
Contribution
L'entrée sera donnée sous forme de quatre (x, y) coordonnées. Vous pouvez les prendre comme une liste de longueur 4 de listes / tuples de longueur 2. Alternativement, vous pouvez prendre l'entrée comme une liste des coordonnées x et une liste des coordonnées y respectives.
Par exemple, si ma forme a des sommets aux points (0, 0)
, (5, 0)
, (6, 1)
et (1, 1)
, vous pouvez choisir de prendre l' entrée dans l'un des formats suivants ou quelque chose de similaire:
[(0, 0), (5, 0), (6, 1), (1, 1)]
([0, 5, 6, 1], [0, 0, 1, 1])
Vous pouvez supposer que le quadrilatère n'est pas auto-intersecté et que les points sont donnés dans le bon ordre (c'est-à-dire que deux points consécutifs dans l'entrée seront connectés par un segment de ligne dans le quadrilatère).
Production
Vous aurez besoin d'une sortie unique pour chacune des classes de quadrilatères suivantes:
- Carré
- Rectangle
- Rhombe
- Parallélogramme
- Trapèze / Trapèze
- Kite
- Quadrilatère
Cela pourrait être le nom exact lui-même, un caractère, un entier, etc.
Règles
- Les échappatoires standard s'appliquent
- Si votre langage de programmation a un intégré qui effectuera cette tâche exacte, ce intégré n'est pas autorisé.
- Les fonctions intégrées pour trouver la distance entre deux points sont autorisées.
- Les fonctions intégrées pour trouver l'angle entre deux lignes sont autorisées.
À ce stade, si vous connaissez tous les termes, vous êtes prêt à commencer la programmation! (Les cas de test sont à la fin)
Terminologie
Cette section s'adresse à toute personne qui a besoin d'éclaircissements sur les définitions des différentes formes.
Carré
Un quadrilatère est un carré si et seulement si ses 4 côtés sont égaux en longueur et que chaque paire de côtés adjacents est perpendiculaire (c'est-à-dire à la fois un rectangle et un losange).
Rectangle
Un quadrilatère est un rectangle si et seulement si chaque paire de côtés adjacents est perpendiculaire.
Rhombe
Un quadrilatère est un losange si et seulement si ses 4 côtés sont égaux.
Parallélogramme
Un quadrilatère est un parallélogramme si et seulement si chaque paire de côtés opposés est parallèle et chaque paire d'angles opposés est égale. Ces deux conditions s’impliquent mutuellement, il vous suffit donc de vérifier l’une d’elles.
Trapèze / Trapèze
Un quadrilatère est un trapèze / trapèze si et seulement s'il a au moins une paire de côtés parallèles.
Kite
Un quadrilatère est un cerf-volant si deux paires opposées de côtés adjacents sont de longueur égale; c'est-à-dire que deux de ses côtés adjacents sont égaux et les deux autres sont également égaux.
Cas de test
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
Liens (Calculatrice graphique Desmos)
Voici des liens vers des visualisations de chacun des cas de test.
Rectangle carré
losange
parallélogramme
trapézoïde / trapèze
cerf-volant
quadrilatère
Critères gagnants
Je ne peux évidemment pas apporter un ordinateur à l'examen, j'ai donc besoin que vous écriviez le code le plus court possible pour pouvoir le mémoriser. Je dois l'écrire dans les marges et l'exécuter en utilisant TryItOffline TM afin de l'adapter aux marges, votre programme doit être aussi petit que possible!
1 Bien sûr, j'ai fait: P
2 Bien sûr, j'ai fait: P