Найти мин и макс n-кортежа? - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть кортеж, представляющий координаты XY.Эти кортежи затем используются для определения размеров двух блоков, как показано здесь here.Затем я хотел бы создать ограничивающий прямоугольник, окружающий эти два прямоугольника, который затем имеет две точки;один для нижнего левого и один для верхнего правого.Правая точка бота будет иметь x-координату min (p1.x, p3.x), y-координату = min (p1.y, p3.y).Верхняя правая точка будет иметь x = max (p2.x, p4.x), y = max (p2.y, p4.y), если я не ошибаюсь.

Основная проблема, которую я должен решить, - это найти способ получить минимальное и максимальное количество n-кортежей и вывести эти две новые точки для внешней ограничительной рамки довольно симпатичным способом.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

В чем-то похожем на ответ @ TomasPetricek, вы можете использовать LINQ в C #:

var p1 = (0, 5);
var p2 = (10, 15);
var p3 = (5, 0);
var p4 = (15, 10);

var ps = new[] { p1, p2, p3, p4 };

var minX = ps.Select(p => p.Item1).Min();
var minY = ps.Select(p => p.Item2).Min();

Используя метод LINQ Aggregate, вы можете сразу вычислить ответ:

var ps = new[] { p2, p3, p4 };

var ans = ps.Aggregate((p1, p1), (rect, p) => ((Math.Min(rect.Item1.Item1,p.Item1),Math.Min(rect.Item1.Item2,p.Item2)),
                                               (Math.Max(rect.Item2.Item1,p.Item1),Math.Max(rect.Item2.Item2,p.Item2))));
0 голосов
/ 28 ноября 2018

Трудно дать полезный ответ, не зная немного больше о контексте и не видя пример кода того, что у вас есть.Тем не менее, ваши четыре точки - это, предположительно, четыре кортежа:

let p1 = (0, 5)
let p2 = (10, 15)
let p3 = (5, 0)
let p4 = (15, 10)

Теперь, если вы просто хотите получить минимальные значения X и Y, вы можете создать список всех точек и использовать minBy:

let ps = [p1; p2; p3; p4] 
let minX = ps |> List.minBy fst
let minY = ps |> List.minBy snd
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...