Transform one list into another [duplicate]
This question already has an answer here:
Algorithm: optimal way to rearrange a list from one order to another?
4 answers
Given two lists, for example:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
I wish to find a series of moves which will transform list a into list b, where each move is an operation:
move(from_index, to_index)
which moves the element at location from_index and places it at location to_index. So if:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
then the operation move(3,1) on the list a will transform a into:
a = [0, 3, 1, 2, 4, 5, 6, 7, 8, 9]
algorithm
marked as duplicate by squeamish ossifrage, Community♦ Nov 23 at 10:54
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
|
show 2 more comments
This question already has an answer here:
Algorithm: optimal way to rearrange a list from one order to another?
4 answers
Given two lists, for example:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
I wish to find a series of moves which will transform list a into list b, where each move is an operation:
move(from_index, to_index)
which moves the element at location from_index and places it at location to_index. So if:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
then the operation move(3,1) on the list a will transform a into:
a = [0, 3, 1, 2, 4, 5, 6, 7, 8, 9]
algorithm
marked as duplicate by squeamish ossifrage, Community♦ Nov 23 at 10:54
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
Is the transformation always possible?
– merlyn
Nov 23 at 7:43
is this Python?
– snoram
Nov 23 at 7:44
Are these lists permutations of each other?
– MBo
Nov 23 at 7:48
Are you looking for something more specific like the minimum number of moves?
– Mark Meyer
Nov 23 at 7:52
1
So basically you want insertion sort
– Paul
Nov 23 at 7:58
|
show 2 more comments
This question already has an answer here:
Algorithm: optimal way to rearrange a list from one order to another?
4 answers
Given two lists, for example:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
I wish to find a series of moves which will transform list a into list b, where each move is an operation:
move(from_index, to_index)
which moves the element at location from_index and places it at location to_index. So if:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
then the operation move(3,1) on the list a will transform a into:
a = [0, 3, 1, 2, 4, 5, 6, 7, 8, 9]
algorithm
This question already has an answer here:
Algorithm: optimal way to rearrange a list from one order to another?
4 answers
Given two lists, for example:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
I wish to find a series of moves which will transform list a into list b, where each move is an operation:
move(from_index, to_index)
which moves the element at location from_index and places it at location to_index. So if:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
then the operation move(3,1) on the list a will transform a into:
a = [0, 3, 1, 2, 4, 5, 6, 7, 8, 9]
This question already has an answer here:
Algorithm: optimal way to rearrange a list from one order to another?
4 answers
algorithm
algorithm
asked Nov 23 at 7:33
mkam
258110
258110
marked as duplicate by squeamish ossifrage, Community♦ Nov 23 at 10:54
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
marked as duplicate by squeamish ossifrage, Community♦ Nov 23 at 10:54
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
Is the transformation always possible?
– merlyn
Nov 23 at 7:43
is this Python?
– snoram
Nov 23 at 7:44
Are these lists permutations of each other?
– MBo
Nov 23 at 7:48
Are you looking for something more specific like the minimum number of moves?
– Mark Meyer
Nov 23 at 7:52
1
So basically you want insertion sort
– Paul
Nov 23 at 7:58
|
show 2 more comments
Is the transformation always possible?
– merlyn
Nov 23 at 7:43
is this Python?
– snoram
Nov 23 at 7:44
Are these lists permutations of each other?
– MBo
Nov 23 at 7:48
Are you looking for something more specific like the minimum number of moves?
– Mark Meyer
Nov 23 at 7:52
1
So basically you want insertion sort
– Paul
Nov 23 at 7:58
Is the transformation always possible?
– merlyn
Nov 23 at 7:43
Is the transformation always possible?
– merlyn
Nov 23 at 7:43
is this Python?
– snoram
Nov 23 at 7:44
is this Python?
– snoram
Nov 23 at 7:44
Are these lists permutations of each other?
– MBo
Nov 23 at 7:48
Are these lists permutations of each other?
– MBo
Nov 23 at 7:48
Are you looking for something more specific like the minimum number of moves?
– Mark Meyer
Nov 23 at 7:52
Are you looking for something more specific like the minimum number of moves?
– Mark Meyer
Nov 23 at 7:52
1
1
So basically you want insertion sort
– Paul
Nov 23 at 7:58
So basically you want insertion sort
– Paul
Nov 23 at 7:58
|
show 2 more comments
2 Answers
2
active
oldest
votes
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
move(0, 8)
a = [1, 2, 3, 4, 5, 6, 7, 0, 8, 9]
move(0, 8)
a = [2, 3, 4, 5, 6, 7, 0, 1, 8, 9]
move(1, 8)
a = [2, 4, 5, 6, 7, 0, 1, 3, 8, 9]
move(2, 8)
a = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
a==b
Hopefully that's what you're looking for.
Basically, start with the left- most element and move it to where it should be. For example, I took 0 and placed it right after the value that it is supposed to eventually end up behind, which is 7. I continued moving from left to right until all of the elements were in the desired order.
2
I think the OP is looking for a general algorithm, not the specific moves to this one case.
– Mark Meyer
Nov 23 at 7:51
@MarkMeyer good point. I just added a summary of my general strategy to the end of my answer.
– Snake14
Nov 23 at 7:53
Thanks for this solution. It works well. Can you optimize it so it is optimal or nearly optimal? For example, this algorithm would take 5 moves to transform [0,1,2,3,4,5] -> [5,0,1,2,3,4], when one move is sufficient (move(5,0)).
– mkam
Nov 23 at 8:57
add a comment |
I'd iterate over the second sequence (the sorted list) and swap items in the first. I wrote this pseudo-code in python:
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
>>> def swap(seq, i, j):
... a = seq[i]
... seq[i] = seq[j]
... seq[j] = a
...
>>> for index_in_b, value in enumerate(b):
... index_in_a = a.index(value)
... if index_in_b != index_in_a:
... swap(a, index_in_a, index_in_b)
... print('move {} to {}'.format(index_in_a, index_in_b))
move 0 to 2
move 1 to 4
move 2 to 6
move 3 to 7
move 4 to 6
move 5 to 6
move 6 to 7
In this case I'm moving the items in the first sequence by swapping them.
Update
We can slightly improve the performance in python by removing the move inside swap function and also removing the function call. Here is a performance comparison:
import timeit
s1 = """
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
def swap(seq, i, j):
a = seq[i]
seq[i] = seq[j]
seq[j] = a
for index_in_b, value in enumerate(b):
index_in_a = a.index(value)
if index_in_b != index_in_a:
swap(a, index_in_a, index_in_b)"""
s2 = """
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
for index_in_b, value in enumerate(b):
index_in_a = a.index(value)
if index_in_b != index_in_a:
a[index_in_a], a[index_in_b] = a[index_in_b], a[index_in_a]"""
# on an i7 macbook pro
timeit.timeit(s1)
4.087386846542358
timeit.timeit(s2)
3.5381240844726562
Slightly better, but for sure there are better ways to achieve this.
Thanks for your solution, although converting a swap operation into two move operations is going to be too expensive.
– mkam
Nov 23 at 8:53
We can make it slightly faster by moving both at one go. I'll update the answer with timeit results.
– Mehdi Sadeghi
Nov 23 at 9:17
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
move(0, 8)
a = [1, 2, 3, 4, 5, 6, 7, 0, 8, 9]
move(0, 8)
a = [2, 3, 4, 5, 6, 7, 0, 1, 8, 9]
move(1, 8)
a = [2, 4, 5, 6, 7, 0, 1, 3, 8, 9]
move(2, 8)
a = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
a==b
Hopefully that's what you're looking for.
Basically, start with the left- most element and move it to where it should be. For example, I took 0 and placed it right after the value that it is supposed to eventually end up behind, which is 7. I continued moving from left to right until all of the elements were in the desired order.
2
I think the OP is looking for a general algorithm, not the specific moves to this one case.
– Mark Meyer
Nov 23 at 7:51
@MarkMeyer good point. I just added a summary of my general strategy to the end of my answer.
– Snake14
Nov 23 at 7:53
Thanks for this solution. It works well. Can you optimize it so it is optimal or nearly optimal? For example, this algorithm would take 5 moves to transform [0,1,2,3,4,5] -> [5,0,1,2,3,4], when one move is sufficient (move(5,0)).
– mkam
Nov 23 at 8:57
add a comment |
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
move(0, 8)
a = [1, 2, 3, 4, 5, 6, 7, 0, 8, 9]
move(0, 8)
a = [2, 3, 4, 5, 6, 7, 0, 1, 8, 9]
move(1, 8)
a = [2, 4, 5, 6, 7, 0, 1, 3, 8, 9]
move(2, 8)
a = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
a==b
Hopefully that's what you're looking for.
Basically, start with the left- most element and move it to where it should be. For example, I took 0 and placed it right after the value that it is supposed to eventually end up behind, which is 7. I continued moving from left to right until all of the elements were in the desired order.
2
I think the OP is looking for a general algorithm, not the specific moves to this one case.
– Mark Meyer
Nov 23 at 7:51
@MarkMeyer good point. I just added a summary of my general strategy to the end of my answer.
– Snake14
Nov 23 at 7:53
Thanks for this solution. It works well. Can you optimize it so it is optimal or nearly optimal? For example, this algorithm would take 5 moves to transform [0,1,2,3,4,5] -> [5,0,1,2,3,4], when one move is sufficient (move(5,0)).
– mkam
Nov 23 at 8:57
add a comment |
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
move(0, 8)
a = [1, 2, 3, 4, 5, 6, 7, 0, 8, 9]
move(0, 8)
a = [2, 3, 4, 5, 6, 7, 0, 1, 8, 9]
move(1, 8)
a = [2, 4, 5, 6, 7, 0, 1, 3, 8, 9]
move(2, 8)
a = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
a==b
Hopefully that's what you're looking for.
Basically, start with the left- most element and move it to where it should be. For example, I took 0 and placed it right after the value that it is supposed to eventually end up behind, which is 7. I continued moving from left to right until all of the elements were in the desired order.
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
move(0, 8)
a = [1, 2, 3, 4, 5, 6, 7, 0, 8, 9]
move(0, 8)
a = [2, 3, 4, 5, 6, 7, 0, 1, 8, 9]
move(1, 8)
a = [2, 4, 5, 6, 7, 0, 1, 3, 8, 9]
move(2, 8)
a = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
a==b
Hopefully that's what you're looking for.
Basically, start with the left- most element and move it to where it should be. For example, I took 0 and placed it right after the value that it is supposed to eventually end up behind, which is 7. I continued moving from left to right until all of the elements were in the desired order.
edited Nov 23 at 8:06
answered Nov 23 at 7:50
Snake14
28917
28917
2
I think the OP is looking for a general algorithm, not the specific moves to this one case.
– Mark Meyer
Nov 23 at 7:51
@MarkMeyer good point. I just added a summary of my general strategy to the end of my answer.
– Snake14
Nov 23 at 7:53
Thanks for this solution. It works well. Can you optimize it so it is optimal or nearly optimal? For example, this algorithm would take 5 moves to transform [0,1,2,3,4,5] -> [5,0,1,2,3,4], when one move is sufficient (move(5,0)).
– mkam
Nov 23 at 8:57
add a comment |
2
I think the OP is looking for a general algorithm, not the specific moves to this one case.
– Mark Meyer
Nov 23 at 7:51
@MarkMeyer good point. I just added a summary of my general strategy to the end of my answer.
– Snake14
Nov 23 at 7:53
Thanks for this solution. It works well. Can you optimize it so it is optimal or nearly optimal? For example, this algorithm would take 5 moves to transform [0,1,2,3,4,5] -> [5,0,1,2,3,4], when one move is sufficient (move(5,0)).
– mkam
Nov 23 at 8:57
2
2
I think the OP is looking for a general algorithm, not the specific moves to this one case.
– Mark Meyer
Nov 23 at 7:51
I think the OP is looking for a general algorithm, not the specific moves to this one case.
– Mark Meyer
Nov 23 at 7:51
@MarkMeyer good point. I just added a summary of my general strategy to the end of my answer.
– Snake14
Nov 23 at 7:53
@MarkMeyer good point. I just added a summary of my general strategy to the end of my answer.
– Snake14
Nov 23 at 7:53
Thanks for this solution. It works well. Can you optimize it so it is optimal or nearly optimal? For example, this algorithm would take 5 moves to transform [0,1,2,3,4,5] -> [5,0,1,2,3,4], when one move is sufficient (move(5,0)).
– mkam
Nov 23 at 8:57
Thanks for this solution. It works well. Can you optimize it so it is optimal or nearly optimal? For example, this algorithm would take 5 moves to transform [0,1,2,3,4,5] -> [5,0,1,2,3,4], when one move is sufficient (move(5,0)).
– mkam
Nov 23 at 8:57
add a comment |
I'd iterate over the second sequence (the sorted list) and swap items in the first. I wrote this pseudo-code in python:
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
>>> def swap(seq, i, j):
... a = seq[i]
... seq[i] = seq[j]
... seq[j] = a
...
>>> for index_in_b, value in enumerate(b):
... index_in_a = a.index(value)
... if index_in_b != index_in_a:
... swap(a, index_in_a, index_in_b)
... print('move {} to {}'.format(index_in_a, index_in_b))
move 0 to 2
move 1 to 4
move 2 to 6
move 3 to 7
move 4 to 6
move 5 to 6
move 6 to 7
In this case I'm moving the items in the first sequence by swapping them.
Update
We can slightly improve the performance in python by removing the move inside swap function and also removing the function call. Here is a performance comparison:
import timeit
s1 = """
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
def swap(seq, i, j):
a = seq[i]
seq[i] = seq[j]
seq[j] = a
for index_in_b, value in enumerate(b):
index_in_a = a.index(value)
if index_in_b != index_in_a:
swap(a, index_in_a, index_in_b)"""
s2 = """
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
for index_in_b, value in enumerate(b):
index_in_a = a.index(value)
if index_in_b != index_in_a:
a[index_in_a], a[index_in_b] = a[index_in_b], a[index_in_a]"""
# on an i7 macbook pro
timeit.timeit(s1)
4.087386846542358
timeit.timeit(s2)
3.5381240844726562
Slightly better, but for sure there are better ways to achieve this.
Thanks for your solution, although converting a swap operation into two move operations is going to be too expensive.
– mkam
Nov 23 at 8:53
We can make it slightly faster by moving both at one go. I'll update the answer with timeit results.
– Mehdi Sadeghi
Nov 23 at 9:17
add a comment |
I'd iterate over the second sequence (the sorted list) and swap items in the first. I wrote this pseudo-code in python:
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
>>> def swap(seq, i, j):
... a = seq[i]
... seq[i] = seq[j]
... seq[j] = a
...
>>> for index_in_b, value in enumerate(b):
... index_in_a = a.index(value)
... if index_in_b != index_in_a:
... swap(a, index_in_a, index_in_b)
... print('move {} to {}'.format(index_in_a, index_in_b))
move 0 to 2
move 1 to 4
move 2 to 6
move 3 to 7
move 4 to 6
move 5 to 6
move 6 to 7
In this case I'm moving the items in the first sequence by swapping them.
Update
We can slightly improve the performance in python by removing the move inside swap function and also removing the function call. Here is a performance comparison:
import timeit
s1 = """
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
def swap(seq, i, j):
a = seq[i]
seq[i] = seq[j]
seq[j] = a
for index_in_b, value in enumerate(b):
index_in_a = a.index(value)
if index_in_b != index_in_a:
swap(a, index_in_a, index_in_b)"""
s2 = """
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
for index_in_b, value in enumerate(b):
index_in_a = a.index(value)
if index_in_b != index_in_a:
a[index_in_a], a[index_in_b] = a[index_in_b], a[index_in_a]"""
# on an i7 macbook pro
timeit.timeit(s1)
4.087386846542358
timeit.timeit(s2)
3.5381240844726562
Slightly better, but for sure there are better ways to achieve this.
Thanks for your solution, although converting a swap operation into two move operations is going to be too expensive.
– mkam
Nov 23 at 8:53
We can make it slightly faster by moving both at one go. I'll update the answer with timeit results.
– Mehdi Sadeghi
Nov 23 at 9:17
add a comment |
I'd iterate over the second sequence (the sorted list) and swap items in the first. I wrote this pseudo-code in python:
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
>>> def swap(seq, i, j):
... a = seq[i]
... seq[i] = seq[j]
... seq[j] = a
...
>>> for index_in_b, value in enumerate(b):
... index_in_a = a.index(value)
... if index_in_b != index_in_a:
... swap(a, index_in_a, index_in_b)
... print('move {} to {}'.format(index_in_a, index_in_b))
move 0 to 2
move 1 to 4
move 2 to 6
move 3 to 7
move 4 to 6
move 5 to 6
move 6 to 7
In this case I'm moving the items in the first sequence by swapping them.
Update
We can slightly improve the performance in python by removing the move inside swap function and also removing the function call. Here is a performance comparison:
import timeit
s1 = """
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
def swap(seq, i, j):
a = seq[i]
seq[i] = seq[j]
seq[j] = a
for index_in_b, value in enumerate(b):
index_in_a = a.index(value)
if index_in_b != index_in_a:
swap(a, index_in_a, index_in_b)"""
s2 = """
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
for index_in_b, value in enumerate(b):
index_in_a = a.index(value)
if index_in_b != index_in_a:
a[index_in_a], a[index_in_b] = a[index_in_b], a[index_in_a]"""
# on an i7 macbook pro
timeit.timeit(s1)
4.087386846542358
timeit.timeit(s2)
3.5381240844726562
Slightly better, but for sure there are better ways to achieve this.
I'd iterate over the second sequence (the sorted list) and swap items in the first. I wrote this pseudo-code in python:
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
>>> def swap(seq, i, j):
... a = seq[i]
... seq[i] = seq[j]
... seq[j] = a
...
>>> for index_in_b, value in enumerate(b):
... index_in_a = a.index(value)
... if index_in_b != index_in_a:
... swap(a, index_in_a, index_in_b)
... print('move {} to {}'.format(index_in_a, index_in_b))
move 0 to 2
move 1 to 4
move 2 to 6
move 3 to 7
move 4 to 6
move 5 to 6
move 6 to 7
In this case I'm moving the items in the first sequence by swapping them.
Update
We can slightly improve the performance in python by removing the move inside swap function and also removing the function call. Here is a performance comparison:
import timeit
s1 = """
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
def swap(seq, i, j):
a = seq[i]
seq[i] = seq[j]
seq[j] = a
for index_in_b, value in enumerate(b):
index_in_a = a.index(value)
if index_in_b != index_in_a:
swap(a, index_in_a, index_in_b)"""
s2 = """
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 4, 6, 7, 0, 1, 3, 5, 8, 9]
for index_in_b, value in enumerate(b):
index_in_a = a.index(value)
if index_in_b != index_in_a:
a[index_in_a], a[index_in_b] = a[index_in_b], a[index_in_a]"""
# on an i7 macbook pro
timeit.timeit(s1)
4.087386846542358
timeit.timeit(s2)
3.5381240844726562
Slightly better, but for sure there are better ways to achieve this.
edited Nov 23 at 9:28
answered Nov 23 at 8:27
Mehdi Sadeghi
2,6851725
2,6851725
Thanks for your solution, although converting a swap operation into two move operations is going to be too expensive.
– mkam
Nov 23 at 8:53
We can make it slightly faster by moving both at one go. I'll update the answer with timeit results.
– Mehdi Sadeghi
Nov 23 at 9:17
add a comment |
Thanks for your solution, although converting a swap operation into two move operations is going to be too expensive.
– mkam
Nov 23 at 8:53
We can make it slightly faster by moving both at one go. I'll update the answer with timeit results.
– Mehdi Sadeghi
Nov 23 at 9:17
Thanks for your solution, although converting a swap operation into two move operations is going to be too expensive.
– mkam
Nov 23 at 8:53
Thanks for your solution, although converting a swap operation into two move operations is going to be too expensive.
– mkam
Nov 23 at 8:53
We can make it slightly faster by moving both at one go. I'll update the answer with timeit results.
– Mehdi Sadeghi
Nov 23 at 9:17
We can make it slightly faster by moving both at one go. I'll update the answer with timeit results.
– Mehdi Sadeghi
Nov 23 at 9:17
add a comment |
Is the transformation always possible?
– merlyn
Nov 23 at 7:43
is this Python?
– snoram
Nov 23 at 7:44
Are these lists permutations of each other?
– MBo
Nov 23 at 7:48
Are you looking for something more specific like the minimum number of moves?
– Mark Meyer
Nov 23 at 7:52
1
So basically you want insertion sort
– Paul
Nov 23 at 7:58