0-jij-0's blog

By 0-jij-0, history, 3 years ago, In English

Hello,

I was wondering if there's any trick that allows us to iterate over the boundary of an $$$N \times M$$$ grid using a single loop instead of 4 or 2.

To iterate over the whole grid for example we can iterate from 0 to $$$NM$$$ and have $$$i = x / M$$$ and $$$j = x \% M$$$.

So is there any smart thing like this to do for the boundary only (i.e pairs $$$(i, j)$$$ such that either $$$i = 0$$$ or $$$i = N - 1$$$ or $$$j = 0$$$ or $$$j = M - 1$$$)

Thanks for future help!

EDIT: Problem Solved!

Solution 1
Solution 2
My Solution inspired by the previous one
  • Vote: I like it
  • +20
  • Vote: I do not like it

»
3 years ago, # |
Rev. 2   Vote: I like it +4 Vote: I do not like it

Here you go

code
  • »
    »
    3 years ago, # ^ |
      Vote: I like it +3 Vote: I do not like it

    This is clever! Thank you for the suggestion

»
3 years ago, # |
  Vote: I like it +25 Vote: I do not like it

I would probably do it this way:

code

But note that it doesn't work when $$$n = 1$$$ or $$$m = 1$$$ so you will probably have to run a simple loop for that.

  • »
    »
    3 years ago, # ^ |
    Rev. 3   Vote: I like it +3 Vote: I do not like it

    I got your point and your idea to skip the stuff in between actually inspired me to get the following and the complexity would be simply $$$O(N + M)$$$

    Code

    Thank you!

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by 0-jij-0 (previous revision, new revision, compare).