JavaRush/Java блог/Архив info.javarush/Кухня(); Задание N54
terranum
28 уровень

Кухня(); Задание N54

Статья из группы Архив info.javarush
участников
Кухня(); Задание N54 - 1 Правила [Одномерные массивы] 54. В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в следующем порядке: x1, y1, х2, y2, x3, y3, и т.д. Определить номера точек, которые могут являться вершинами равнобедренного треугольника.
Комментарии (7)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Vash_the_Stampede
Уровень 11
19 сентября 2014, 16:32
public class Main {
    private Main(){}

    public static void main(String[] args) {
    }

    public static int[] solve(double[] arr) {
        Point[] points = new Point[arr.length / 2];
        for (int i = 0; i < points.length; i++) {
            points[i] = new Point(arr[2 * i], arr[2 * i + 1]);
            for (int j = 0; j < i; j++) {
                for (int k = 0; k < j; k++) {
                    double a = points[i].distTo(points[j]);
                    double b = points[j].distTo(points[k]);
                    double c = points[k].distTo(points[i]);
                    if ((a - b) * (b - c) * (c - a) == 0) {
                        return new int[] { i, j, k };
                    }
                }
            }
        }
        return null;
    }
}

class Point {
    private double x;
    private double y;

    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }

    public double distTo(Point p) {
        return Math.hypot(x - p.x, y - p.y);
    }
}
aiv
Уровень 27
19 сентября 2014, 22:19
По моему первый же проход циклов вернет треугольник, состоящий из единственной точки, т.к. будет ситуация i=j=k=0. Это первое, второе — треугольник ведь может быть не один, а несколько.
Или я не прав?
Docktor91
Уровень 40
19 сентября 2014, 22:41
...\
Vash_the_Stampede
Уровень 11
20 сентября 2014, 06:53
по-моему, нет. ибо j < i, k < j
Docktor91
Уровень 40
20 сентября 2014, 13:13
а что если точки (0,0)(0,0)(0,5)?
Vash_the_Stampede
Уровень 11
20 сентября 2014, 16:28
вот это норм тест. да, нужно добавить проверку, являются ли точками треугольником вообще
aiv
Уровень 27
20 сентября 2014, 21:45
Извиняюсь, просмотрел :-(