Llistes iguals circularment V55523


Statement
 

pdf   zip   main.cc

thehtml

Donades dues llistes d’enters, volem saber si una és igual circularment a l’altra. És a dir, si es pot obtenir una llista a partir de l’altra rotant els seus elements.

Per exemple: l1 = [1, 2, 3] és igual circularment a l2 = [3, 1, 2], perquè en posar el 3 de l2 al final, obtenim l1. Un altre exemple: [2, 7, 1, 0] no és igual a [0, 1, 7, 2]. Un cas especial és que considerarem que dues llistes buides són iguals circularment.

L’exercici és implementar la funció següent:

/**
 * @pre  cert
 * @post es retorna cert si l1 i l2 són iguals circularment, 
 *       fals en cas contrari.
 */
bool circularly_equal(const list<int>& l1, const list<int>& l2)

Només cal enviar aquesta funció.

Observació Només cal enviar el procediment demanat; el programa principal serà ignorat.

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
Catalan
Other languages
Spanish
Official solutions
C++
User solutions
C++