💪 Задача
Нарисовать змейку
Напишите функцию, которая принимает число n и выводит таблицу размером n * n, заполненную числами от 1 до n^2 по спирали, выходящей из левого верхнего угла и закрученной по часовой стрелке.
Пример входных параметров:
n = 5
Ожидается на выходе:
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
👉 Решение в следующем посте
Python Community
3.2K · 👨🏼💻 Решение к задаче про змейку ☝️
import os
def Snake(n):
# великолепный код тут
inputFile = open(os.getenv("INPUT_FILE") , "r")
a = inputFile.readline()
result = "|".join(map(lambda x: " ".join(map(str, x)), Snake(a)))
outputFile = open(os.getenv("OUTPUT_FILE"), "w")
outputFile.write(result)
inputFile.close()
outputFile.close()
Python Community
3.1K · id 1387967118💪 Задача
Нарисовать змейку
Напишите функцию, которая принимает число n и выводит таблицу размером n * n, заполненную числами от 1 до n^2 по спирали, выходящей из левого верхнего угла и закрученной по часовой стрелке.
Пример входных параметров:
n = 5
Ожидается на выходе:
1 2 3 4 5
16 17 18 19
я сам не смог, но нашел такое решение
id 1387967118💪 Задача
Нарисовать змейку
Напишите функцию, которая принимает число n и выводит таблицу размером n * n, заполненную числами от 1 до n^2 по спирали, выходящей из левого верхнего угла и закрученной по часовой стрелке.
Пример входных параметров:
n = 5
Ожидается на выходе:
1 2 3 4 5
16 17 18 19
n = int(input('The number: '))
array = [[0] * n for i in range(n)]
i = 1
x = 0
y = -1
go_row = 0
go_column = 1
length = len(str(n ** 2))
while i <= n ** 2:
if 0 <= x + go_row < n and 0 <= y + go_column < n and array[x + go_row][y + go_column] == 0:
x += go_row
y += go_column
array[x][y] = i
i += 1
else:
if go_column == 1:
go_column = 0
go_row = 1
elif go_row == 1:
go_row = 0
go_column = -1
elif go_column == -1:
go_column = 0
go_row = -1
elif go_row == -1:
go_row = 0
go_column = 1
for row in array:
for element in row:
print(str(element).rjust(length), end=' ')
print()
id 1387967118👨🏼💻 Решение к задаче про змейку ☝️
import os
def Snake(n):
# великолепный код тут
inputFile = open(os.getenv("INPUT_FILE") , "r")
a = inputFile.readline()
result = "|".join(map(lambda x: " ".join(map(str, x)), Snake(a)))
outputFile = open(os.getenv("OUTPUT_FILE"), "w")
outputFile.write(re
Как этот код рисует змейку?
id 1387967118👨🏼💻 Решение к задаче про змейку ☝️
import os
def Snake(n):
# великолепный код тут
inputFile = open(os.getenv("INPUT_FILE") , "r")
a = inputFile.readline()
result = "|".join(map(lambda x: " ".join(map(str, x)), Snake(a)))
outputFile = open(os.getenv("OUTPUT_FILE"), "w")
outputFile.write(re
боже мой😱 сколько всего еще нужно выучить
Файл
Легкий_способ_выучить_Python_3_еще_глубже.pdf · 12.8 МБ · нажмите — покажем
Легкий_способ_выучить_Python_3_еще_глубже.pdf · 12.8 МБ · нажмите — покажем
📔 Title: Легкий способ выучить Python 3 еще глубже.
#Book #Python #RU
🌐 Lang.: Russian
🧔 Author: Зед Шоу.
🕘 Year: 2020
📑 Pages: 274
#️⃣ ISBN: 978-5-04-093107-1
📝 Description: Зед Шоу — один из тех, кто по-настоящему разбирается в Python. Его советы помогли миллионам программистов по всему миру, помогут они и вам. От вас потребуются лишь
дисциплина, желание и упорство, все остальное вы найдете в книге «Легкий способ выучить Python 3 еще глубже». Это вторая часть «Легкого способа выучить Python 3», где Зед описывал базовые принципы программирования на Python 3. Вторая часть углубит ваши знания и поможет приобрести новые навыки с помощью 52 прекрасно составленных заданий.
@bzd_channel
26.1K · id 1387967118👨🏼💻 Решение к задаче про змейку ☝️
import os
def Snake(n):
# великолепный код тут
inputFile = open(os.getenv("INPUT_FILE") , "r")
a = inputFile.readline()
result = "|".join(map(lambda x: " ".join(map(str, x)), Snake(a)))
outputFile = open(os.getenv("OUTPUT_FILE"), "w")
outputFile.write(re
Тут должна быть шутка про то "чем отличается питонист от пасечника", но похоже админ чатика облажался с ответом, поэтому её не будет
id 1387967118👨🏼💻 Решение к задаче про змейку ☝️
import os
def Snake(n):
# великолепный код тут
inputFile = open(os.getenv("INPUT_FILE") , "r")
a = inputFile.readline()
result = "|".join(map(lambda x: " ".join(map(str, x)), Snake(a)))
outputFile = open(os.getenv("OUTPUT_FILE"), "w")
outputFile.write(re
Фотография
нажмите — покажем
нажмите — покажем
.n = int(input('The number: '))
array = [[0] * n for i in range(n)]
i = 1
x = 0
y = -1
go_row = 0
go_column = 1
length = len(str(n ** 2))
while i <= n ** 2:
if 0 <= x + go_row < n and 0 <= y + go_column < n and array[x + go_row][y + go_column] == 0:
x += go_row
y += go_column
Фотография
нажмите — покажем
нажмите — покажем
мой вариант
id 1387967118👨🏼💻 Решение к задаче про змейку ☝️
import os
def Snake(n):
# великолепный код тут
inputFile = open(os.getenv("INPUT_FILE") , "r")
a = inputFile.readline()
result = "|".join(map(lambda x: " ".join(map(str, x)), Snake(a)))
outputFile = open(os.getenv("OUTPUT_FILE"), "w")
outputFile.write(re
import math
from itertools import cycle
class Snake:
def __init__(self):
self.x = 0
self.y = 0
self.move = self.move_right
def move_right(self) -> None:
self.x += 1
def move_left(self) -> None:
self.x -= 1
def move_down(self) -> None:
self.y += 1
def move_up(self) -> None:
self.y -= 1
def move_direction(self) -> cycle:
return cycle([self.move_right, self.move_down, self.move_left, self.move_up])
def move_back(self) -> None:
match self.move:
case self.move_right:
self.x -= 1
case self.move_left:
self.x += 1
case self.move_down:
self.y -= 1
case self.move_up:
self.y += 1
def get_current_element_or_none(self, board: dict[int, list[str]]) -> str | None:
try:
return board.get(self.y)[self.x]
except IndexError:
return None
except TypeError:
return None
def snake(n: int) -> None:
board: dict[int, list[str]] = {row: ['0' for column in range(n)] for row in range(n)}
python = Snake()
move_direction = python.move_direction()
next(move_direction)
python.move_back() # get on -1 position. And next move wil be on zero position
for number in range(n ** 2):
python.move()
element = python.get_current_element_or_none(board)
if not element or element != '0':
python.move_back()
python.move = next(move_direction)
python.move()
board[python.y][python.x] = f'{number + 1}'.rjust(int(math.log10(n**2)) + 1, ' ')
for line in board.values():
print(*line)
if __name__ == '__main__':
snake(7)