mirror of
https://github.com/correl/elm.git
synced 2024-12-23 03:00:08 +00:00
65 lines
1.8 KiB
Markdown
65 lines
1.8 KiB
Markdown
|
# Atbash Cipher
|
||
|
|
||
|
Create an implementation of the atbash cipher, an ancient encryption system created in the Middle East.
|
||
|
|
||
|
The Atbash cipher is a simple substitution cipher that relies on
|
||
|
transposing all the letters in the alphabet such that the resulting
|
||
|
alphabet is backwards. The first letter is replaced with the last
|
||
|
letter, the second with the second-last, and so on.
|
||
|
|
||
|
An Atbash cipher for the Latin alphabet would be as follows:
|
||
|
|
||
|
```plain
|
||
|
Plain: abcdefghijklmnopqrstuvwxyz
|
||
|
Cipher: zyxwvutsrqponmlkjihgfedcba
|
||
|
```
|
||
|
|
||
|
It is a very weak cipher because it only has one possible key, and it is
|
||
|
a simple monoalphabetic substitution cipher. However, this may not have
|
||
|
been an issue in the cipher's time.
|
||
|
|
||
|
Ciphertext is written out in groups of fixed length, the traditional group size
|
||
|
being 5 letters, and punctuation is excluded. This is to make it harder to guess
|
||
|
things based on word boundaries.
|
||
|
|
||
|
## Examples
|
||
|
- Encoding `test` gives `gvhg`
|
||
|
- Decoding `gvhg` gives `test`
|
||
|
- Decoding `gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt` gives `thequickbrownfoxjumpsoverthelazydog`
|
||
|
|
||
|
## Elm Installation
|
||
|
|
||
|
Refer to the [Exercism help page](http://exercism.io/languages/elm) for Elm
|
||
|
installation and learning resources.
|
||
|
|
||
|
## Writing the Code
|
||
|
|
||
|
The first time you start an exercise, you'll need to ensure you have the
|
||
|
appropriate dependencies installed.
|
||
|
|
||
|
```bash
|
||
|
$ npm install
|
||
|
```
|
||
|
|
||
|
Execute the tests with:
|
||
|
|
||
|
```bash
|
||
|
$ npm test
|
||
|
```
|
||
|
|
||
|
Automatically run tests again when you save changes:
|
||
|
|
||
|
```bash
|
||
|
$ npm run watch
|
||
|
```
|
||
|
|
||
|
As you work your way through the test suite, be sure to remove the `skip <|`
|
||
|
calls from each test until you get them all passing!
|
||
|
|
||
|
## Source
|
||
|
|
||
|
Wikipedia [http://en.wikipedia.org/wiki/Atbash](http://en.wikipedia.org/wiki/Atbash)
|
||
|
|
||
|
## Submitting Incomplete Solutions
|
||
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|