L'algorithme consiste à faire tourner chaque "anneau", en allant du plus extérieur au plus intérieur.
AAAAA
ABBBA
ABCBA
ABBBA
AAAAA
L'algorithme ferait tourner d'abord tous les A, puis les B et enfin les C. Pour faire tourner un anneau, il faut déplacer 4 valeurs à la fois.
L'indice i est compris entre 0 et la largeur de l'anneau 1, par exemple, pour A, la largeur est de 5.
(i,0) -> temp
(0, N-i-1) -> (i, 0)
(N-i-1, N-1) -> (0, N-i-1)
(N-1, i) -> (N-i-1, N-1)
temp -> (N-1, i)
Cette opération est ensuite répétée pour chaque anneau intérieur successif, en décalant les coordonnées et en réduisant la largeur de l'anneau de 2.
(Une autre réponse est apparue avec le code, je ne la répéterai donc pas).