Tasossa on kolme suorakulmiota, joiden sivut ovat vaaka- ja pystyakselien suuntaisia. Tehtäväsi on laskea sen alueen pinta-ala, jota peittää vähintään yksi annetuista suorakulmioista.
Esimerkiksi seuraavassa kuvassa suorakulmioiden peittämän alueen pinta-ala on 16. Kuva vastaa koodipohjissa olevaa esimerkkiä.
Huomaa, että on liian hidasta käydä läpi kaikki pisteet suorakulmioiden alueelta, vaan sinun tulee keksiä tehokkaampi matemaattinen ratkaisu.
Python
Toteuta funktio area(rec1, rec2, rec3)
, joka antaa kysytyn pinta-alan. Funktiolle annetaan kolme tuplea, joista jokainen määrittelee yhden suorakulmion. Jokaisessa tuplessa on neljä kokonaislukua x_1, y_1, x_2 ja y_2: suorakulmion vasen ylänurkka on (x_1,y_1) ja oikea alanurkka on (x_2,y_2).
Toteuta funktio tiedostoon rectangles.py
.
def area(rec1, rec2, rec3): # TODO if __name__ == "__main__": rec1 = (-1,1,1,-1) rec2 = (0,3,2,0) rec3 = (0,2,3,-2) print(area(rec1,rec2,rec3)) # 16
Java
Toteuta metodi area(rec1, rec2, rec3)
, joka antaa kysytyn pinta-alan. Metodille annetaan kolme taulukkoa, joista jokainen määrittelee yhden suorakulmion. Jokaisessa taulukossa on neljä kokonaislukua x_1, y_1, x_2 ja y_2: suorakulmion vasen ylänurkka on (x_1,y_1) ja oikea alanurkka on (x_2,y_2).
Toteuta metodi tiedostoon Rectangles.java
.
public class Rectangles { public long area(int rec1[], int rec2[], int rec3[]) { // TODO } public static void main(String[] args) { Rectangles r = new Rectangles(); int[] rec1 = {-1,1,1,-1}; int[] rec2 = {0,3,2,0}; int[] rec3 = {0,2,3,-2}; System.out.println(r.area(rec1,rec2,rec3)); // 16 } }