mirror of https://github.com/01-edu/public.git
mikysett
2 years ago
committed by
Michele
1 changed files with 64 additions and 0 deletions
@ -0,0 +1,64 @@
|
||||
## 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"` |
||||
|
||||
```console |
||||
-------------------------------- |
||||
|s| |c| |y| |t| |a| |l| |
||||
|e| | | |C| |o| |d| |e| |
||||
-------------------------------- |
||||
``` |
||||
|
||||
**letters_per_turn 4:** `"scytale Code"` -> `"steoca dylCe"` |
||||
|
||||
|
||||
```console |
||||
------------------------------------------ |
||||
|s| |c| |y| |
||||
|t| |a| |l| |
||||
|e| | | |C| |
||||
|o| |d| |e| |
||||
------------------------------------------ |
||||
``` |
||||
|
||||
### Expected Functions |
||||
|
||||
```rust |
||||
pub fn scytale_decoder(s: String, letters_per_turn: u32) -> Option<String> { |
||||
} |
||||
``` |
||||
|
||||
### Usage |
||||
|
||||
Here is a program to test your function |
||||
|
||||
```rust |
||||
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 |
||||
|
||||
```console |
||||
$ cargo run |
||||
"sec yCtoadle" size=2 -> Some("scytale Code") |
||||
"steoca dylCe" size=4 -> Some("scytale Code") |
||||
$ |
||||
``` |
Loading…
Reference in new issue