Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Python Задачка "Серпантин"

CognitiveTeam Профи (527), на голосовании 1 год назад
У меня есть задача, я ёё в целом решил, но оказывается её надо решать без использования списков.
Хелпаните плиз
 def print_spiral_numbers(n, m): 
matrix = [['' for _ in range(m)] for _ in range((n // m) + 1)]

current_num = 1

for i in range(0, len(matrix), 2):
for j in range(m):
if current_num > n:
break
matrix[i][j] = current_num
current_num += 1

if current_num > n:
break

i += 1

for j in range(m - 1, -1, -1):
if current_num > n:
break
matrix[i][j] = current_num
current_num += 1

for row in matrix:
print('\t'.join(map(str, row)))


n = int(input())
m = int(input())

print_spiral_numbers(n, m)
Сама задача:
Напишите программу, записывающую последовательные числа от 1 до n в виде такой дорожки: сначала первые m чисел слева направо, в следующей строке следующие m чисел справа налево и так далее. Последняя строка может быть неполной.

Числа в строках разделены символом табуляции.

Формат ввода
Вводятся два числа: n и m.

Формат вывода
Выведите строки чисел в описанном порядке.

Пример
Ввод
23
5
Вывод
1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16
21 22 23
Голосование за лучший ответ
Роман Белый Мастер (1477) 1 год назад
n = int(input())
m = int(input())

for i in range(0, n, m):
if i // m % 2 == 0:
for j in range(i, min(i + m, n)):
print(j + 1, end="\t")
else:
for j in range(i + m - 1, i - 1, -1):
print(j + 1, end="\t")
print()
если без списков то попробуй так , условию соотвествует
CognitiveTeamПрофи (527) 1 год назад
ну тут как-бы разница вывода есть...
CognitiveTeamПрофи (527) 1 год назад
Во
 n = int(input()) 
m = int(input())
k = number = 1
for i in range(n // m + 1):
for j in range(m):
if number + j * k > n:
print('', end='\t')
continue
print(number + j * k, end='\t')
number += 2 * ((i + 1) % 2) * m - k
k *= -1
print()
Похожие вопросы