помогите построить фигуру
`1
21
321
4321
54321
654321
7654321
87654321
987654321
87654321
7654321
654321
54321
4321
321
21
1`
Ответы (2 шт):
Автор решения: Soup
→ Ссылка
for i in range(1, 10):
print(''.join(list(map(str, range(i, 0, -1)))))
for i in range(8, 0, -1):
print(''.join(list(map(str, range(i, 0, -1)))))
Автор решения: Zhihar
→ Ссылка
вариант 1:
for i in list(range(1, 9)) + [9] + list(reversed(range(1, 9))):
print(*[j for j in list(reversed(range(1, i + 1)))], sep='')
вариант 2 (однострочный):
print(*[''.join(map(str, [j for j in list(reversed(range(1, i + 1)))])) for i in list(range(1, 9)) + [9] + list(reversed(range(1, 9)))], sep='\n')
вариант 3 (однострочный укороченный):
print(*[''.join(map(str, [j for j in range(1, i + 1)]))[::-1] for i in [1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1]], sep='\n')
еще короче
print(*[''.join(map(str, range(1, i + 1)))[::-1] for i in [1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1]], sep='\n')
еще чуть-чуть короче
print(*[''.join(map(str, range(i, 0, -1))) for i in [1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1]], sep='\n')
вариант 4 (самый короткий):
print(*[''.join(map(str, range(i, 0, -1))) for i in list(range(1, 10)) + list(range(8, 0, -1))], sep='\n')
вариант 5 (еще короче, от @GrAnd):
print(*[''.join(map(str, range(i, 0, -1))) for i in [*range(1, 10), *range(8, 0, -1)]], sep='\n')
вариант 6 (еще на пару байтиков короче):
print('\n'.join(''.join(map(str, range(i, 0, -1))) for i in [*range(1, 10), *range(8, 0, -1)]))
вариант 7 (от колдуна @GrAnd):
[print("".join(map(str, range(9 - abs(i), 0, -1)))) for i in range(-8, 9)]
вариант 8 (еще более короткий, но менее универсальный):
[print("123456789"[:9 - abs(i)][::-1]) for i in range(-8, 9)]
и даже так:
[print("987654321"[abs(8 - i):]) for i in range(17)]
и еще на одну буковку поменьше:
[print("987654321"[abs(i):]) for i in range(-8, 9)]