Listas iguales circularmente V55523


Statement
 

pdf   zip   main.cc

thehtml

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: l1 = [1, 2, 3] es igual circularmente a l2 = [3, 1, 2], porque al colocar el 3 de l2 al final, obtenemos l1. Otro ejemplo: [2, 7, 1, 0] no es igual a [0, 1, 7, 2]. 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.

Observación Sólo tenéis que enviar el procedimiento requerido; el programa principal será ignorado.

Sample session
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
Information
Author
PRO2
Language
Spanish
Translator
Original language
Catalan
Other languages
Catalan
Official solutions
C++
User solutions
C++