Aiuto! Il mio esame di matematica si avvicina presto e non ho studiato! 1 Parte dell'esame è classificare un quadrilatero date le sue coordinate di vertice, che purtroppo non so come fare. 2
Quindi, la tua sfida è quella di scrivere un programma per fare questo per me, quindi non fallisco!
Sfida
Dati quattro vertici in modo tale che tre di essi non siano colorati, determinare la classificazione più specifica del quadrilatero formato da quei quattro vertici.
Quello che intendo per "classificazione più specifica" è che anche se tutti i quadrati sono rettangoli, se la forma è un quadrato, dovresti indicare che è un quadrato e non indicare che è un rettangolo.
Ingresso
L'input verrà dato come quattro (x, y) coordinate. Puoi prenderli come un elenco di lunghezza 4 di elenchi / tuple di lunghezza 2. In alternativa, puoi prendere input come un elenco delle coordinate x e un elenco delle rispettive coordinate y.
Ad esempio, se la mia forma ha i vertici nei punti (0, 0), (5, 0), (6, 1), e (1, 1), si può scegliere di prendere in ingresso in uno dei seguenti formati o qualcosa di simile:
[(0, 0), (5, 0), (6, 1), (1, 1)]
([0, 5, 6, 1], [0, 0, 1, 1])
Si può presumere che il quadrilatero non sia autointersecante e che i punti siano indicati nell'ordine corretto (ovvero, due punti consecutivi nell'input saranno collegati da un segmento di linea nel quadrilatero).
Produzione
Sarà necessario un output univoco per ciascuna delle seguenti classi di quadrilateri:
- Piazza
- Rettangolo
- Rombo
- parallelogrammo
- Trapezio / Trapezio
- Aquilone
- Quadrilatero
Questo potrebbe essere il nome esatto stesso, un carattere, un numero intero, ecc.
Regole
- Si applicano scappatoie standard
- Se il tuo linguaggio di programmazione ha un built-in che eseguirà questo preciso compito, quel built-in non è permesso.
- Sono consentiti incorporati per trovare la distanza tra due punti.
- Sono consentiti incorporati per trovare l'angolo tra due linee.
A questo punto, se conosci tutti i termini, sei pronto per iniziare la programmazione! (I casi di test sono alla fine)
Terminologia
Questa sezione è per chiunque abbia bisogno di chiarimenti sulle definizioni delle diverse forme.
Piazza
Un quadrilatero è un quadrato se e solo se tutti e 4 i suoi lati sono uguali in lunghezza e ogni coppia di lati adiacenti è perpendicolare (cioè è sia un rettangolo che un rombo).
Rettangolo
Un quadrilatero è un rettangolo se e solo se ogni coppia di lati adiacenti è perpendicolare.
Rombo
Un quadrilatero è un rombo se e solo se tutti e 4 i suoi lati sono uguali.
parallelogrammo
Un quadrilatero è un parallelogramma se e solo se ogni coppia di lati opposti è parallela e ogni coppia di angoli opposti è uguale. Entrambe queste condizioni si implicano a vicenda, quindi è necessario verificarne solo una.
Trapezio / Trapezio
Un quadrilatero è un trapezio / trapezio se e solo se ha almeno una coppia di lati paralleli.
Aquilone
Un quadrilatero è un aquilone se due coppie opposte di lati adiacenti sono uguali in lunghezza; cioè due dei suoi lati adiacenti sono uguali e anche gli altri due sono uguali.
Casi 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
Collegamenti (Desmos Graphing Calculator)
Ecco i collegamenti alle visualizzazioni di ciascuno dei casi di test.
Piazza
rettangolo
Rhombus
parallelogramma
trapezio / Trapezio
Kite
Quadrilatero
Criteri vincenti
Ovviamente non posso portare un computer all'esame, quindi ho bisogno che tu scriva il codice più breve possibile per poterlo memorizzare. Ho bisogno di scriverlo ai margini ed eseguirlo usando TryItOffline TM in modo da adattarlo ai margini che il tuo programma deve essere il più piccolo possibile!
1 Certo che l'ho fatto davvero: P
2 Certo che l'ho fatto davvero: P