Este es el algoritmo que uso yo:
Otros algoritmos:
Una forma más cómoda de realizar los movimientos anteriores: