Python Swap Function
I'm having a hard time expressing this in Python. This is the description of what needs to be done. swap_cards: (list of int, int) -> NoneType swap_cards([3, 2, 1, 4, 5, 6, 0]
Solution 1:
Sounds like some index notation is required here:
>>>defswap_cards(L, n):...iflen(L) == n + 1:... L[n], L[0] = L[0], L[n]...return L... L[n], L[n+1] = L[n+1], L[n]...return L...>>>swap_cards([3, 2, 1, 4, 5, 6, 0], 5)
[3, 2, 1, 4, 5, 0, 6]
>>>swap_cards([3, 2, 1, 4, 5, 6, 0], 6)
[0, 2, 1, 4, 5, 6, 3]
Solution 2:
You can use the tuple swap idiom a, b = b, a
to swap the variable noting that for edge cases you need to wrap around the index index % len(seq)
Implementation
def swap_cards(seq, index):
indexes = (index, (index + 1)% len(seq))
seq[indexes[0]], seq[indexes[1]] = seq[indexes[1]], seq[indexes[0]]
return seq
Example
>>> swap_cards([3, 2, 1, 4, 5, 6, 0], 6)
[0, 2, 1, 4, 5, 6, 3]
>>> swap_cards([3, 2, 1, 4, 5, 6, 0], 5)
[3, 2, 1, 4, 5, 0, 6]
Solution 3:
defswap_cards(deck, index):
if index inrange(0, len(deck)):
factor = (index + 1) % len(deck)
aux = deck[factor]
deck[factor] = deck[index]
deck[index] = aux
return deck
else:
returnNone
deck = [3, 2, 1, 4, 5, 6, 0]
new_deck = swap_cards(deck, 6)
print new_deck
Output:
[0, 2, 1, 4, 5, 6, 3]
Post a Comment for "Python Swap Function"