fork download
  1. S, a = map(int, input().split())
  2. n = a - 1
  3.  
  4. SIZE = 200
  5. grid = [[' '] * SIZE for _ in range(SIZE)]
  6.  
  7. def draw_E(row, col):
  8. #hang giu nguyen, cot thay doi(dich sang phai, tuc col += 1)
  9. for _ in range(n):
  10. col += 1
  11. grid[row][col] = "*"
  12.  
  13. return row, col
  14.  
  15. def draw_W(row, col):
  16. #hang giu nguyen, cot thay doi(dich sang trai tuc col -= 1)
  17. for _ in range(n):
  18. col -= 1
  19. grid[row][col] = "*"
  20.  
  21. return row, col
  22.  
  23. def draw_S(row, col):
  24. #Hang thay doi(hang dich xuong duoi => row += 1), cot giu nguyen
  25. for _ in range(n):
  26. row += 1
  27. grid[row][col] = "*"
  28.  
  29. return row, col
  30.  
  31. def draw_N(row, col):
  32. #Hang thay doi(Hang dich len tren -> row -= 1), cot giu nguyen
  33. for _ in range(n):
  34. row -= 1
  35. grid[row][col] = "*"
  36.  
  37. return row, col
  38.  
  39. def draw_SE(row, col):
  40. #Hang phai dich xuong duoi => row += 1
  41. #Cot phai dich sang phai => col += 1
  42. for _ in range(n):
  43. row += 1
  44. col += 1
  45. grid[row][col] = "*"
  46.  
  47. return row, col
  48.  
  49. def draw_SW(row, col):
  50. #Hang phai dich xuong duoi => row += 1
  51. #Cot phai dich sang trai => col -= 1
  52. for _ in range(n):
  53. row += 1
  54. col -= 1
  55. grid[row][col] = "*"
  56.  
  57. return row, col
  58.  
  59. def draw_NW(row, col):
  60. #Hang phai dich len tren => row -= 1
  61. #Cot phai dich sang trai => col -= 1
  62. for _ in range(n):
  63. row -= 1
  64. col -= 1
  65. grid[row][col] = "*"
  66.  
  67. return row, col
  68.  
  69. def draw_NE(row, col):
  70. #Hang phai dich len tren => row -= 1
  71. #Cot phai dich sang phai => col += 1
  72. for _ in range(n):
  73. row -= 1
  74. col += 1
  75. grid[row][col] = "*"
  76.  
  77. return row, col
  78.  
  79. #Chon diem xuat phat(co the o bat ki dau nhung chon lam` sao cho khi ve khong bi lech ra ngoai)
  80. row, col = 100, 100
  81. grid[row][col] = "*"
  82.  
  83. if S == 3:
  84. row, col = draw_E(row, col)
  85. row, col = draw_SW(row, col)
  86. row, col = draw_N(row, col)
  87.  
  88. elif S == 4:
  89. row, col = draw_E(row, col)
  90. row, col = draw_S(row, col)
  91. row, col = draw_W(row, col)
  92. row, col = draw_N(row, col)
  93.  
  94. elif S == 6:
  95. row, col = draw_E(row, col)
  96. row, col = draw_SE(row, col)
  97. row, col = draw_SW(row, col)
  98. row, col = draw_W(row, col)
  99. row, col = draw_NW(row, col)
  100. row, col = draw_NE(row, col)
  101.  
  102. else: # S == 8
  103. row, col = draw_E(row, col)
  104. row, col = draw_SE(row, col)
  105. row, col = draw_S(row, col)
  106. row, col = draw_SW(row, col)
  107. row, col = draw_W(row, col)
  108. row, col = draw_NW(row, col)
  109. row, col = draw_N(row, col)
  110. row, col = draw_NE(row, col)
  111.  
  112. #Tim hinh chu nhat nho nhat chua hinh
  113. top = SIZE
  114. bottom = -1
  115. left = SIZE
  116. right = -1
  117.  
  118. for i in range(SIZE):
  119. for j in range(SIZE):
  120. if grid[i][j] == '*':
  121. top = min(top, i)
  122. bottom = max(bottom, i)
  123. left = min(left, j)
  124. right = max(right, j)
  125.  
  126. # In ra, bỏ khoảng trắng thừa cuối mỗi dòng
  127. for i in range(top, bottom + 1):
  128. line = ''.join(grid[i][left:right + 1])
  129. print(line.rstrip())
Success #stdin #stdout 0.09s 14168KB
stdin
6 6
stdout
     ******
    *      *
   *        *
  *          *
 *            *
*              *
 *            *
  *          *
   *        *
    *      *
     ******