Задача "Прогулка питона"

Помогите, пожалуйста, решить задачу "Прогулка питона".

Имя входного файла: стандартный ввод
Имя выходного файла: стандартный вывод
Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт

У Вани дома проживает ручной питон, с которым он очень любит гулять. Но сегодня питон первый раз самостоятельно выбрался на прогулку. А Ваня-то очень переживает за него! Сделайте, пожалуйста, снимок питона с воздуха и отправьте его Ване, чтобы он больше не переживал! Известно, что Ванин дом находится в точке (0, 0) координатной плоскости, а его питон обычно двигается «по спирали» против часовой стрелки. Спираль состоит из n отрезков — каждый из них в k раз длиннее предыдущего, а длина первого отрезка составляет x клеток. То есть, питон выползает из дома в координате (0, 0), продвигается на x клеток вправо, потом на kx клеток вверх, k 2x клеток влево и так далее. Формат входных данных В единственной строке вводятся три числа k, x, n (1 6 k, x, n 6 5) — «вид» спирали, по которой движется питон. Формат выходных данных Построчно выведите прямоугольник с изображением спирали, по которой движется питон. Обратите внимание, снимок не должен содержать ничего лишнего, его размер должен быть минимальным и содержать питона целиком! Также питон может проползать по одному и тому же месту несколько раз.

Стандартный ввод:
2 1 5
Стандартный вывод:

#####............
#...#............
#..##............
#................
#................
#................
#................
#................
#################
kon=0
k, x, n = map(int, input().split())#в k раз длиннее предыдущего, первый отрезок, n отрезков
z=x
k2=1
s=0
for i in range(1,n+1):
    z=k2*x
    k2*=k
    if kon==4:
        kon=0
    kon+=1
    s+=z
w = [['.'] * (z+1) for i in range(z//k+1)]
if kon==4:
    x2,y= 0,-1
    dx, dy = 1, 0
elif kon==1:
    x2,y=-1,-1
    dx, dy = 0, -1
elif kon==2:
    x2,y=0,0
    dx, dy = 0, 1
else:
    x2,y=-1,0
    dx, dy = -1, 0
vs=z+1
for i in range(1, s+2):
    #print(z,k,vs)
    vs-=1
    if vs==0:
        z=z//k
        vs=z
        dx, dy = dy,-dx
        print(dx,dy)
    w[x2][y]='#'
    x2, y = x2+dx, y+dy
for i in w:
    for j in i:
        print(j, end='')
    print()

Код выдаёт вроде верный результат в примере, но при замене значений он ошибается, а также работает слишком долго. Я новичок в программировании, поэтому код скорее всего очень корявый)


Ответы (0 шт):