You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
mikysett 286d6f09b6 feat(scytale_decoder): add new exercise for rust exams 2 years ago
..
README.md feat(scytale_decoder): add new exercise for rust exams 2 years ago

README.md

scytale_cipher

Instructions

Create a function which decode a scytale cipher (also known as spartan cipher).

In practice, it is represented by a strip wrapped around a cylinder. The message is written across the loops of the strip (not along the strip). The message becomes coded if the radius of the cylinder changes, or the strip is removed from the cylinder.

Your function will receive a String representing the ciphered message, and a u32 representing the number of letters by turn of the strip around the cylinder.

If the ciphered message is empty or the letters per turn are 0 the function will return None.

Example

letters_per_turn 2: "scytale Code" -> "sec yCtoadle"

--------------------------------
  |s|  |c|  |y|  |t|  |a|  |l|
  |e|  | |  |C|  |o|  |d|  |e|
--------------------------------

letters_per_turn 4: "scytale Code" -> "steoca dylCe"

------------------------------------------
  |s|  |c|  |y|
  |t|  |a|  |l|
  |e|  | |  |C|
  |o|  |d|  |e|
------------------------------------------

Expected Functions

pub fn scytale_decoder(s: String, letters_per_turn: u32) -> Option<String> {
}

Usage

Here is a program to test your function

fn main() {
    println!("\"sec yCtoadle\" size=2 -> {:?}",
        scytale_decoder("sec yCtoadle".to_string(), 2));

    println!("\"steoca dylCe\" size=4 -> {:?}",
        scytale_decoder("steoca dylCe".to_string(), 4));
}

And its output

$ cargo run
"sec yCtoadle" size=2 -> Some("scytale Code")
"steoca dylCe" size=4 -> Some("scytale Code")
$