fn main(){
   let text = "Hello!";
   let text = text.to_string();
   let text = text.chars();
   let mut text: Vec<char> = text.collect();
   text.push('$'); // 终止符
   let n = text.len();

   let text = (0..n).map(|i| {
       let mut rot = String::new();
       for j in 0..n {
           // print!("{} ",(i + j) %n );
           print!("{} ",(i + j) %n);
           rot.push(text[(i + j) % n]);
       }
       println!("{}", rot);
       rot
           
   }).collect::<Vec<String>>();
   // for c in text {
   //     println!("{}", c);
   // }            
   // println!("Original: {}", text);
}
(i + j) 
0 1 2 3 4 5 6 Hello!$
1 2 3 4 5 6 7 ello!$H
2 3 4 5 6 7 8 llo!$He
3 4 5 6 7 8 9 lo!$Hel
4 5 6 7 8 9 10 o!$Hell
5 6 7 8 9 10 11 !$Hello
6 7 8 9 10 11 12 $Hello!
(i + j) % n
0 1 2 3 4 5 6 Hello!$
1 2 3 4 5 6 0 ello!$H
2 3 4 5 6 0 1 llo!$He
3 4 5 6 0 1 2 lo!$Hel
4 5 6 0 1 2 3 o!$Hell
5 6 0 1 2 3 4 !$Hello
6 0 1 2 3 4 5 $Hello!