Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
after 10086 solution in Clear category for Robot Sort by Little+cheng
def swapsort(array):
result = []
order = [i for i in array]
while order != sorted(array):
for i in range(len(order)-1):
if order[i]>order[i+1]:
result.append(f'{i}{i+1}')
x = order[i]
order[i] = order[i+1]
order[i+1] = x
return ','.join(result)
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
def check_solution(f, indata):
result = f(indata)
array = list(indata[:])
la = len(array)
if not isinstance(result, str):
print("The result should be a string")
return False
actions = result.split(",") if result else []
for act in actions:
if len(act) != 2 or not act.isdigit():
print("The wrong action: {}".format(act))
return False
i, j = int(act[0]), int(act[1])
if i >= la or j >= la:
print("Index error: {}".format(act))
return False
if abs(i - j) != 1:
print("The wrong action: {}".format(act))
return False
array[i], array[j] = array[j], array[i]
if len(actions) > (la * (la - 1)) // 2:
print("Too many actions. BOOM!")
return False
if array != sorted(indata):
print("The array is not sorted. BOOM!")
return False
return True
assert check_solution(swapsort, (6, 4, 2)), "Reverse simple"
assert check_solution(swapsort, (1, 2, 3, 4, 5)), "All right!"
assert check_solution(swapsort, (1, 2, 3, 5, 3)), "One move"
April 28, 2020