`1` ```exercism fetch haskell crypto-square ```

# Crypto Square

Implement the classic method for composing secret messages called a square code.

Given an English text, output the encoded version of that text.

First, the input is normalized: the spaces and punctuation are removed from the English text and the message is downcased.

Then, the normalized characters are broken into rows. These rows can be regarded as forming a rectangle when printed with intervening newlines.

For example, the sentence

If man was meant to stay on the ground, god would have given us roots.

is normalized to:

ifmanwasmeanttostayonthegroundgodwouldhavegivenusroots

The plaintext should be organized in to a rectangle. The size of the rectangle (`r x c`) should be decided by the length of the message, such that `c >= r` and `c - r <= 1`, where `c` is the number of columns and `r` is the number of rows.

Our normalized text is 54 characters long, dictating a rectangle with `c = 8` and `r = 7`:

 ```1 2 3 4 5 6 7``` ```ifmanwas meanttos tayonthe groundgo dwouldha vegivenu sroots ```

The coded message is obtained by reading down the columns going left to right.

The message above is coded as:

 `1` ```imtgdvsfearwermayoogoanouuiontnnlvtwttddesaohghnsseoau ```

Output the encoded text in chunks that fill perfect rectangles `(r X c)`, with `c` chunks of `r` length, separated by spaces. For phrases that are `n` characters short of the perfect rectangle, pad each of the last `n` chunks with a single trailing space.

 `1` ```imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau ```

Notice that were we to stack these, we could visually decode the cyphertext back in to the original message:

 ```1 2 3 4 5 6 7 8``` ```imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau ```

## Getting Started

For installation and learning resources, refer to the exercism help page.

## Running the tests

To run the test suite, execute the following command:

 `1` ```stack test ```

#### If you get an error message like this...

 `1` ```No .cabal file found in directory ```

You are probably running an old stack version and need to upgrade it.

#### Otherwise, if you get an error message like this...

 ```1 2``` ```No compiler found, expected minor version match with... Try running "stack setup" to install the correct GHC... ```

Just do as it says and it will download and install the correct compiler version:

 `1` ```stack setup ```

## Running GHCi

If you want to play with your solution in GHCi, just run the command:

 `1` ```stack ghci ```

## Feedback, Issues, Pull Requests

The exercism/haskell repository on GitHub is the home for all of the Haskell exercises.

If you have feedback about an exercise, or want to help implementing a new one, head over there and create an issue. We'll do our best to help you!

## Source

J Dalbey's Programming Practice problems http://users.csc.calpoly.edu/~jdalbey/103/Projects/ProgrammingPractice.html

## Submitting Incomplete Solutions

It's possible to submit an incomplete solution so you can see how others have completed the exercise.