В основном я пытаюсь выяснить формулу, которая вычисляет уникальный идентификационный номер для точки в двухмерном пространстве. Условия: если f (x, y) = c, то других X1, Y1 не существует, так что f (X1, Y1) = c оба x и y являются целыми числами, а c также должно быть целым числом (double может не подходить, так как его точность сомнительна, и я не уверен, подходит ли она для использования в качестве ключа в хеш-таблице).
Требуется формула для вычисления идентификатора точки в 2-м пространстве
Ответы (1)
Это, конечно, довольно тривиально. Позвольте мне обрисовать алгоритм, я оставлю кодирование в качестве упражнения для всех, кто хочет это сделать.
Возьмите лист бумаги, лучше сделайте его большим, и начертите на нем сетку из квадратов. Обозначьте столбцы числами от min до max, чтобы для целых чисел это было от 1 до большого числа. Обозначьте строки таким же образом. Я предполагаю, что вы начали маркировать строки и столбцы с 1, тогда верхняя левая ячейка этой сетки будет в (1,1).
В ячейке (1,1) напишите число 1. В ячейке (2,1) напишите 2, в (1,2) напишите 3, в (1,3) напишите 4, в (2,2) напишите 5 , ....
Теперь у вас есть обратимое отображение двумерного целочисленного «пространства» в одномерное целочисленное пространство.
Спасибо Cantor за его помощь с этим.
T
на входе, а затем решив n(n + 1)/2 = T
.
- person wberry; 25.06.2012