Python Forum
Creating a circular matrix with one input
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Creating a circular matrix with one input
#7
There is a recursive implementation
# snail.py

LEFT, DOWN, RIGHT, UP = range(4)

def snail(start, n, m, dir):
    nd = (dir + 1) % 4 # next dir
    if not n:
        return []
    elif not m:
        return [list() for i in range(n)]
    if dir == LEFT:
        s = snail(start + m, n-1, m, nd)
        s.insert(0, list(range(start, start + m)))
    elif dir == DOWN:
        s = snail(start + n, n, m-1, nd)
        for i, row in enumerate(s):
            row.append(start+i)
    elif dir == RIGHT:
        s = snail(start + m, n-1, m, nd)
        s.append(list(range(start + m - 1, start - 1, -1)))
    elif dir == UP:
        s = snail(start + n, n, m-1, nd)
        for i, row in enumerate(s):
            row.insert(0, start + n - 1 - i)
    return s

if __name__ == '__main__':
    for row in snail(1, 5, 5, LEFT):
        print(row)
Output:
[1, 2, 3, 4, 5] [16, 17, 18, 19, 6] [15, 24, 25, 20, 7] [14, 23, 22, 21, 8] [13, 12, 11, 10, 9]
I also have another MUCH shorter recursive implementation.
Reply


Messages In This Thread
RE: Creating a circular matrix with one input - by Gribouillis - Sep-28-2020, 03:31 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Help with a Matrix nxn with black and white input Rosko 3 2,039 Nov-24-2019, 07:39 AM
Last Post: buran
  Creating a wavelet matrix pingaan 4 2,571 May-26-2019, 06:25 PM
Last Post: heiner55
  define a diagonal matrix from a matrix amalalaoui 1 2,400 May-15-2019, 01:12 PM
Last Post: ichabod801
  Code for a circular wire?? hiphopopot0mous 11 6,769 Dec-03-2017, 06:23 PM
Last Post: micseydel
  Creating lists or arrays as the input nickalvar 4 4,313 May-03-2017, 04:46 PM
Last Post: nilamo

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020