У меня есть двумерная игровая доска, которая увеличивается по мере добавления плиток на доску.Плитки могут быть соседними с существующими только в верхнем, нижнем, левом и правом положениях.
Поэтому я подумал, что спиральная матрица с бриллиантами будет наиболее эффективным способом хранения доски, но я не могу найти способпреобразуйте координаты x, y в индекс массива 1d или в обратную операцию.
как этот макет
X -3 -2 -1 0 1 2 3
Y 3 13
2 24 5 14
1 23 12 1 6 15
0 22 11 4 0 2 7 16
-1 21 10 3 8 17
-2 20 9 18
-3 19
Плитка 1 всегда будет в позиции 0, плитка 2 будет в 1,2,3 или 4, фрагмент 3 где-то от 1 до 12 и т. Д.
Поэтому мне нужен алгоритм, который переходит от X, Y к индексу и от индекса обратно к исходным X и Y.
Кто-нибудь знает, как это сделать, или порекомендует другой алгоритм заполнения пространства, который соответствует моим потребностям.Я, вероятно, собираюсь использовать Java, но предпочел бы что-то не зависящее от языка.
Спасибо