Как вывести спираль из звездочек с разделителем на Python?

Вот такая спираль с разделением, состоящая из * должна быть размером n*n (n вводится, как стандартный ввод). Я с легкостью могу вывести спираль из чисел, но вот разделение никак не придумаю, как реализовать..
* * * * * * *
*            
*   * * * * *
*   *       *
*   * * *   *
*           *
* * * * * * *
  • Вопрос задан
  • 149 просмотров
Решения вопроса 2
@Karpion
Вот программа на BBС-basic, разбирайтесь:
n=18
DIM a(n,n)
FOR x=1 TO n
	FOR y=1 TO n
		a(x,y)=ASC(" ")
	NEXT
NEXT

FOR y=1 TO n
	a(1,y)=ASC("*")
	a(y,1)=ASC("*")
	a(y,n)=ASC("*")
NEXT

x=n : y=n
u=0 : v=-1

FOR i=1 TO n-3
	WHILE a(x+u+u,y+v+v)<>ASC("*")
		x+=u
		y+=v
		a(x,y)=ASC("*")
	ENDWHILE
	w=v : v=-u : u=w
NEXT

FOR y=1 TO n
	FOR x=1 TO n
		PRINT CHR$(a(x,y));
	NEXT
	PRINT
NEXT
PRINT
Немного совсем не то. Позже доделаю. Но думаю, принцип понятен.
Ответ написан
trapwalker
@trapwalker
Программист, энтузиаст
n = 16

c = {True: '*', False: ' '}
r = list(range(n//2))
for sy in (1, -1):
    for y in r[::sy]:
        s = []
        for sx in (1, -1):
            for x in r[::sx]:
                d = -2 if (sx, sy) == (-1, 1) else 0
                s.append(c[x >= y+d and not y % 2 or x < y+d and not x % 2])


        print(''.join(s))

Вот пример для четного N.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы