Движение против часовой стрелки Python
Пишу мини-игру но застрял на этапе движения числа против часовой стрелки. У меня есть 2 списка
rival = [0,3,3,3]
my = [3,0,6,0]
И при вызове game(my, rival, 2), я хочу получить такой результат
rival = [1,4,4,4]
my = [4,0,0,1]
То есть мы берём 6 обнуляем её, и приплюсовываем против часовой стрелки. Буду очень благодарный за помощь, я уже запутался :) Вот мой код:
def game(my, rival, pos):
for i in range(len(my)):
if i <= x:
my[i] += 1
my[pos] = 0
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Ну как-то так:
def game(my, rival, x):
y = 1
lst = [rival, my]
val, lst[y][x] = lst[y][x], 0
d = 1
while val > 0:
x += d
if x < 0:
d = -d
y = 1 - y
x = 0
if x >= len(my):
d = -d
y = 1 - y
x = len(my) - 1
lst[y][x] += 1
val -= 1
rival = [0,3,3,3]
my = [3,0,6,0]
game(my, rival, 2)
print(rival)
print(my)
Вывод:
[1, 4, 4, 4]
[4, 0, 0, 1]
Автор решения: passant
→ Ссылка
Странная задача, но тем не менее:
Сама функция:
def game(my, rival, pos):
sp=rival+my[::-1]
for i in range(len(rival)-2+pos,len(rival)-2+pos-my[pos],-1):
sp[i]+=1
rival=sp[0:len(rival)]
my=sp[len(rival):][::-1]
my[pos]=0
return(rival,my)
Вызов:
rival = [0,3,3,3]
my=[3,0,6,0]
pos=2
rival,my=game(my,rival,pos)
print(rival)
print(my)
Результат:
[1, 4, 4, 4]
[4, 0, 0, 1]
Оно?