Тасовка карт на пайтон
Вначале Саша берет верхнюю карту из колоды и кладет ее в правый столбик. После этого берет следующую карту и кладет ее в левую колонку. Когда все карты закончились, он кладет левый столбик на правый. Но одного такого перемешивания недостаточно. Поэтому он повторяет перемешивание «сначала направо, затем налево» p раз.
Input №1
10 2
1 6 4 7 8 3 5 10 9 2
Output №1
1
8
9
7
10
4
5
6
3
2
Input №2
5 1
2 3 5 1 4
Output №2
4
5
2
1
3
Мой код работает только на втором примере.Вот он
s, p = map(int, input().split())
cards = list(map(int, input().split()))
for i in range(p):
right = []
left = []
for j in range(s):
if j % 2 == 0:
right.append(cards[j])
else:
left.append(cards[j])
cards = right + left
cards += left
for card in cards:
print(card)
Не пойму почему не работает на втором примере:(
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Ваш код и для второго примера не работает. И cards += left вообще ни к чему.
По примерам видно, что верхняя карта - последняя в списке. Так что список нужно обходить с конца
for i in range(p):
right = []
left = []
for j in range(s):
if j % 2 == 0:
right.append(cards[s - 1 - j])
else:
left.append(cards[s - 1 - j])
cards = right + left
Чуть покороче:
for i in range(p):
leftright = [[],[]]
for j in range(s):
leftright[j % 2].append(cards[s - 1 - j])
cards = leftright[0] + leftright[1]