Sigui v un vector d’enters. Una
1-rotació del vector v és un vector en què
els elements del vector v estan desplaçats una posició a
l’esquerra. Per exemple, si tenim el vector:
Si hi apliquem una 1-rotació en aquest vector, tots els elements van a la posició de l’esquerra, llevat del primer, que va a parar a la darrera posició del vector:
i, finalment, queda aquest vector:
En general, una n-rotació és un vector que ha estat
rotat n vegades a l’esquerra. Per exemple, pel vector:
una 3-rotació és l’aplicació d’una 1-rotació tres vegades:
Si N
,
tenim que una N-rotació de v té, com a
resultat, el mateix vector v. De fet,
podem considerar que una N-rotació és equivalent a una
0-rotació (en què no fem cap rotació).
Cal que feu una funció que, donats dos vectors v1 i
v2, torni TRUE si i només si v2
és una i-rotació de v1, per a alguna
.
És a dir, si v2 és igual a una i-rotació de
v1. Ja teniu la capçalera d’aquesta funció al fitxer
enunciat.R:
es_rotacio <- function (v1, v2)
Per exemple, si tenim:
la funció tornarà TRUE, ja que v2 és una
2-rotació de v1. En canvi, si tenim:
la funció tornarà FALSE ja que v2 no és una
1-rotació, ni una 2-rotació, 3-rotació 4-rotació ni una 5-rotació.
En cas que v1 i v2 vectors siguin iguals,
la funció tornarà TRUE, ja que v2 és una
5-rotació de v1.
Per a resoldre aquest exercici, podeu fer dues funcions auxiliars:
una funció auxiliar que, donat un vector, en calcula la 1-rotació.
una funció auxiliar que, donats dos vectors, torna
TRUE si i només si tots dos vectors són iguals.
2 vectors v1 i v2 d’enters.
TRUE si i només si v2 és una
i-rotació de v1.
Input
5 2 3 1 5 4 1 5 4 2 3
Output
TRUE
Input
5 2 3 1 5 4 1 4 5 2 3
Output
FALSE
Input
10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Output
TRUE