Given a number `n`, make a down arrow shaped pattern.

For example, when `n = 5`, the output would be:

    123454321
     1234321
      12321
       121
        1

and for `n = 11`, it would be:

    123456789010987654321
     1234567890987654321
      12345678987654321
       123456787654321
        1234567654321
         12345654321
          123454321
           1234321
            12321
             121
              1
              
An important thing to note in the above example is that the numbers greater than 9 still stay single digit, like after 9 it would be 0 - 9 again instead of 10 - 19.

Note: There are spaces for the indentation on the left of each line and no spaces on the right.
                
Have fun!

Difficulty: introductory

Starter code:

def get_a_down_arrow_of(n):
	

Solutions:
def half(i, n):
    return "".join(str(d%10) for d in range(1, n-i+1))

def line(i, n):
    h = half(i, n)
    return " " * i + h + h[-2::-1]

def get_a_down_arrow_of(n):
    return "\n".join(line(i, n) for i in range(n))


from itertools import cycle, islice

def get_a_down_arrow_of(n):
    
    r = []
    
    for i, x in enumerate(range(n, 0, -1)):
        c = cycle('1234567890')
        s = list(islice(c, x))
        s += s[::-1][1:]
        r.append(' ' * i + ''.join(s))
        
    return '\n'.join(r)

from itertools import chain

def get_a_down_arrow_of(n):
    result = []
    for i in range(n, 0, -1):
        row = " " * (n - i) + "".join(str(d % 10) for d in chain(range(1, i), range(i, 0, -1)))
        result.append(row)
    return "\n".join(result)

result = ['1']

def get_a_down_arrow_of(n):
    while len(result) < n:
        i = len(result)
        result.append(result[-1][:i] + str((i+1)%10) + result[-1][i-1::-1])
    return '\n'.join(result[x].center(2*n-1).rstrip() for x in range(n-1, -1, -1))

digits = '1234567890' * 1000

def get_a_down_arrow_of(n):
    width = 2 * n - 1
    return '\n'.join(
        ''.join(digits[:i-1] + digits[max(i-1, 0)::-1]).center(width).rstrip()
        for i in range(n, 0, -1)
    )

def get_a_down_arrow_of(n):
    answer = ""
    for i in range(n, 0, -1):
        spaces = " " * (n - i)
        half1 = "".join(str(x % 10) for x in range(1, i + 1))
        half2 = half1[::-1]
        answer += spaces + half1 + half2[1:] + "\n" * (i > 1)
    return answer

get_a_down_arrow_of=lambda n,m=lambda s:s+s[-2::-1]:'\n'.join(' '*i+m(('1234567890'*n)[:n-i])for i in range(n))

get_a_down_arrow_of=lambda n,s=0: "" if n<1 else " "*s+"1" if n==1 else "\n".join([" "*s+"".join([str(q%10) for q in range(1,n+1)]+[str(q%10) for q in range(n-1,0,-1)])]+[get_a_down_arrow_of(n-1,s+1)])