Dadas dos listas de enteros, queremos saber si una es igual circularmente a la otra. Es decir, si se puede obtener una lista a partir de la otra rotando sus elementos.
Por ejemplo: es igual circularmente a , porque al colocar el 3 de al final, obtenemos . Otro ejemplo: no es igual a . Un caso especial es que consideraremos que dos listas vacías son iguales circularmente.
El ejercicio es implementar la función siguiente:
/**
* @pre cierto
* @post se devuelve cierto si l1 y l2 son iguales circularmente,
* falso en caso contrario.
*/
bool circularly_equal(const list<int>& l1, const list<int>& l2)
Solo hay que enviar esta función.
Sólo tenéis que enviar el procedimiento requerido; el programa principal será ignorado.
circularly_equal([], []) => true circularly_equal([1, 2], [2]) => false circularly_equal([1, 2], [2, 1]) => true circularly_equal([5, 3, 1], [3, 1, 5]) => true