Sha256: 2f8993a9e8a96d360880f4e45feb7a087b14fa20dd3397ca19f903e915899143

Contents?: true

Size: 1.71 KB

Versions: 53

Compression:

Stored size: 1.71 KB

Contents

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`:

```text
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:

```text
imtgdvsfearwermayoogoanouuiontnnlvtwttddesaohghnsseoau
```

Output the encoded text in chunks.  Phrases that fill perfect rectangles
`(r X c)` should be output `c` chunks of `r` length, separated by spaces.
Phrases that do not fill perfect rectangles will have `n` empty spaces.
Those spaces should be distributed evenly, added to the end of the last
`n` chunks.

```text
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:

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

Version data entries

53 entries across 53 versions & 1 rubygems

Version Path
trackler-2.2.1.164 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.163 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.162 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.161 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.160 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.159 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.158 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.157 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.156 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.155 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.154 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.153 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.152 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.151 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.150 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.149 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.148 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.147 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.146 tracks/c/exercises/crypto-square/README.md
trackler-2.2.1.145 tracks/c/exercises/crypto-square/README.md