【问题标题】:two for loops circular walk over两个for循环循环遍历
【发布时间】:2022-01-15 01:10:19
【问题描述】:

我有这样的事情:

语言不相关,因为我需要逻辑上的想法。我希望我的示例代码足够简单,以便开发人员可以使用任何语言阅读。

$radius = 5
for $i,(0-$radius),(0+$radius)
    {
    for $j,(0-$radius),(0+$radius)
        {
        do something with $i and $j
        }
    }

这将像这样遍历我的循环:

我需要像这样走 $i 和 $j:

有没有一种简单的方法可以像这样走 2 圈?

到目前为止,我想出的最好的是:

$radius = 10
for $k,0,$radius
    {
    for $i,(0-$k),(0+$k)
        {
        for $j,(0-$k),(0+$k)
            {
            if ($i == (0-$k) || $i == (0+$k) || $j == (0-$k) || $j == (0+$k)) 
                {
                do something with $i and $j
                }
            }
        }
    }

而且我还没有测试它,所以我不确定它是否会起作用

【问题讨论】:

  • 嗨,Ken,我很抱歉,但我使用的是 easyuo 语言,这里没有标签。同样在这种情况下,语言并不重要,因为我正在寻找逻辑并且任何语言对我来说都可以。我希望我提供的代码足够简单,因此任何其他语言的开发人员都可以理解它。
  • 你是绝对正确的,幸运的是我可以解决这个错误

标签: loops logic


【解决方案1】:

目前尚不清楚您想要最终图形的确切尺寸,但这大致正确:

$i=0
$j=0
$delta = -1

for $k,1,2*radius
  {
  for $m,1,$k
    {
    do something with $i and $j
    $j += $delta
    }
  for $m,1,$k
    {
    do something with $i and $j
    $i += delta
    }
  delta = -delta
  }

【讨论】:

    猜你喜欢
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    相关资源
    最近更新 更多