algorithm - 从位置获取螺旋索引

标签 algorithm language-agnostic

我正在使用 Alberto Santini 对此问题的解决方案来获取基于项目索引的螺旋网格引用

Algorithm for iterating over an outward spiral on a discrete 2D grid from the origin

这不是公认的解决方案,但它是满足我需求的最佳解决方案,因为它避免了使用循环。

它运行良好,但我现在想要的是逆向操作。基于已知的 x 和 y 坐标返回位置的索引。

这是退还给定位置周围元素的前奏。

最佳答案

帕斯卡代码:

if y * y >= x * x then begin
  p := 4 * y * y - y - x;
  if y < x then
    p := p - 2 * (y - x)
end
else begin
  p := 4 * x * x - y - x;
  if y < x then
    p := p + 2 *(y - x)
end;

描述:左上半对角线 (0-4-16-36-64) 包含平方层数 (4 * layer^2)。外部 if 语句定义层并在左上半平面的相应行或列中找到(预)位置的结果,内部 if 语句校正镜像位置的结果。

关于algorithm - 从位置获取螺旋索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41876613/

相关文章:

algorithm - 找到不超过特定权重的最佳元素对?

arrays - 每个 k=1..n 的所有大小为 k 的子数组的最大总和

algorithm - 用函数解析表达式

r - R中学生化外部残差的快速准确计算

将一个范围列表缩放到另一个范围的算法

language-agnostic - 停止拖慢站点速度的机器人和恶意扫描程序的程序是什么?

python - 双变音位算法的最佳/最差/平均时间效率是多少?

language-agnostic - 可搜索的堆结构

language-agnostic - 最好的 Pro OOP 论点是什么?

performance - 为什么编译器这么蠢?