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

1. scientes 283 16.12.22 13:48 Сейчас в теме
Есть такая задача (https://projecteuler.net/problem=816) - для заданного множества точек на плоскости найти минимальное расстояние между двумя точками. Эту задачу уже решили 614 человек и она очень простая. Точки расположены так, что для решения надо упорядочить ряд точек по оси Х или оси Y, затем найти расстояние между соседними точками и выбрать минимальное. В общем случае алгоритм сложнее, но для данного набора точек предложенный подход дает правильное значение. Вопрос состоит в том, как найти ответ с помощью запроса в 1С. На первом шаге заполняется таблица с координатами и передается в запрос через параметр.
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. user1278383 3 16.12.22 14:10 Сейчас в теме
а квадрат расстояния подойдет?)
3. user1278383 3 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 283 16.12.22 14:24 Сейчас в теме
(3) В условии задачи 2 млн точек. Соединение двух таблиц даст 2 млн * 2 млн = 4 000 млрд. строк . Сервер такое не потянет.
5. user1278383 3 16.12.22 14:48 Сейчас в теме
(4) о какой метрике расстояния идет речь?) Для метрики чебышева задача элементарная) Шучу. Надо подумать в таком случае
Оставьте свое сообщение
Вакансии
Ведущий Инженер - программист 1С
Новокузнецк
зарплата от 100 000 руб.
Полный день

Программист
Москва
зарплата от 200 000 руб. до 230 000 руб.
Полный день

Главный специалист (Программист 1с)
Подольск
зарплата от 100 000 руб. до 110 000 руб.
Полный день

Программист 1С
Подольск
зарплата от 150 000 руб. до 200 000 руб.
Полный день

Аналитик (оперативный учет)
Москва
зарплата от 150 000 руб. до 300 000 руб.
Полный день