mardi 26 janvier 2021

How can I improve this algorithm that solves for a missing coordinate?

The user inputs 3 space separated coordinates that can make up a rectangle in the xy-plane. The algorithm returns what must be the 4th point to form a rectangle.

Example: "5 5", "5 7", and "7 5", newline separated, should return "7 7".

The below algorithm works for the provided test cases, but I am failing other cases, and I can't figure out why. Can anyone suggest a way to make my algorithm include all possible inputs - assuming that the 3 inputs provided do in fact form 3 corners of a rectangle?


import java.io.*;

public class cetvrta {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String point1 = reader.readLine(); // 5 5
        String point2 = reader.readLine(); // 5 7
        String point3 = reader.readLine(); // 7 5
        String[] cord1 = point1.split(" "); // ["5","5"]
        String[] cord2 = point2.split(" "); // ["5", "7"]
        String[] cord3 = point3.split(" "); // ["7", "5"]
        int x4 = 0;
        int y4 = 0;
        int x1 = Integer.parseInt(cord1[0]); // 5
        int y1 = Integer.parseInt(cord1[1]); // 5
        int x2 = Integer.parseInt(cord2[0]);
        int y2 = Integer.parseInt(cord2[1]);
        int x3 = Integer.parseInt(cord3[0]);
        int y3 = Integer.parseInt(cord3[1]);

        if (y1 == y2) {
            if (x3 == x1) {
                x4 = x2;
                y4 = y3;
            }
            if (x3 == x2) {
                x4 = x1;
                y4 = y3;
            }
        }
        if (y3 == y2) {
            if (x2 == x3) {
                x4 = x1;
                y4 = y2;
            }
            if (x2 == x1) {
                x4 = x3;
                y4 = y2;
            }
        }
        if (y1 == y3) {
            if (x2 == x1) {
                x4 = x3;
                y4 = y2;
            }
            if (x2 == x3) {
                x4 = x1;
                y4 = y2;
            }
        }
        System.out.println(x4 + " " + y4);
    }

}

Aucun commentaire:

Enregistrer un commentaire