Estou trabalhando em problemas práticos para um teste que tenho e todos os exemplos de variantes de loop diminuíram a cada iteração do loop. Nesse, os valores permanecem os mesmos quando a <b. Minhas tentativas também me deram uma variante de loop que tem uma chance de ser negativa, uma vez que ocasionalmente a se torna maior que be vice-versa. Algum conselho sobre como tentar encontrar e provar a variante de loop para esta pergunta?
def mystery(a,b):
# Precondition: a >= 0 and b >= 0
while a >= 0 and b >= 0:
if a < b:
a, b = b, a
else:
a = a - 1
return a
Edição: Para quem está interessado nesta pergunta, minha melhor solução é a seguinte.