Нужна формула для вычисления ID для точки в 2d пространстве

В основном я пытаюсь найти формулу, которая вычисляет уникальный идентификационный номер для точки в 2-мерном пространстве. Условия: если f(x,y) = c, то нет других X1, Y1, так что f(X1,Y1) = c и x, и y являются целыми числами, а c также должен быть целым числом (double может не подходить, так как его точность сомнительна, и я не уверен, подходит ли она для использования в качестве ключа в хеш-таблице).

1 ответ

Это, конечно, довольно тривиально. Позвольте мне изложить алгоритм, я оставлю кодирование в качестве упражнения для тех, кто хочет это сделать.

Возьмите лист бумаги, лучше сделайте его большим и нарисуйте на нем сетку квадратов. Пометьте столбцы числами от минимального до максимального, поэтому для целых чисел это будет от 1 до, ну, в общем, большого числа. Маркируйте строки таким же образом. Я предполагаю, что вы начали маркировать строки и столбцы с 1, тогда верхняя левая ячейка этой сетки будет в (1,1).

В ячейке в (1,1) напишите число 1. В ячейке (2,1) напишите 2, в (1,2) напишите 3, в (1,3) напишите 4, в (2,2) напишите 5....

Теперь у вас есть обратимое отображение из двумерного целого "пространства" в одномерное целое пространство.

Спасибо Кантору за помощь с этим.

Другие вопросы по тегам