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!