Задача 816 из проекта Эйлера

1. scientes 290 16.12.22 13:48 Сейчас в теме
Есть такая задача (https://projecteuler.net/problem=816) - для заданного множества точек на плоскости найти минимальное расстояние между двумя точками. Эту задачу уже решили 614 человек и она очень простая. Точки расположены так, что для решения надо упорядочить ряд точек по оси Х или оси Y, затем найти расстояние между соседними точками и выбрать минимальное. В общем случае алгоритм сложнее, но для данного набора точек предложенный подход дает правильное значение. Вопрос состоит в том, как найти ответ с помощью запроса в 1С. На первом шаге заполняется таблица с координатами и передается в запрос через параметр.
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1278383 5 16.12.22 14:10 Сейчас в теме
а квадрат расстояния подойдет?)
3. user1278383 5 16.12.22 14:12 Сейчас в теме
(2) или запустить на платформе 8.3.20+
ВЫБРАТЬ
	Координаты.Х,
	Координаты.У
ПОМЕСТИТЬ Координаты
ИЗ
	&Координаты КАК Координаты;
ВЫБРАТЬ  
	Минимум(sqrt((Координаты1.Х-Координаты0.Х)*(Координаты1.Х-Координаты0.Х) + (Координаты1.У-Координаты0.У)*(Координаты1.У-Координаты0.У)))
ИЗ	
	Координаты КАК Координаты0
	Полное Соединение 
	Координаты КАК Координаты1
	ПО (Координаты1.Х<>Координаты0.Х 
	ИЛИ Координаты1.У<>Координаты0.У)  
Показать
4. scientes 290 16.12.22 14:24 Сейчас в теме
(3) В условии задачи 2 млн точек. Соединение двух таблиц даст 2 млн * 2 млн = 4 000 млрд. строк . Сервер такое не потянет.
5. user1278383 5 16.12.22 14:48 Сейчас в теме
(4) о какой метрике расстояния идет речь?) Для метрики чебышева задача элементарная) Шучу. Надо подумать в таком случае
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот