Sha256: 8ed0e393e8d9400a9fbc60b56b5db62983b423010f135273ac959fc3ad0dba59

Contents?: true

Size: 1.6 KB

Versions: 84

Compression:

Stored size: 1.6 KB

Contents

Write a program that, given an English text, outputs 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`:

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

```plain
imtgdvsfearwermayoogoanouuiontnnlvtwttddesaohghnsseoau
```

Output the encoded text in chunks.  Phrases that fill perfect squares
`(r X r)` should be output in `r`-length chunks separated by spaces.
Imperfect squares will have `n` empty spaces.  Those spaces should be distributed evenly across the last `n` rows.

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

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

Version data entries

84 entries across 84 versions & 1 rubygems

Version Path
trackler-2.0.6.28 common/exercises/crypto-square/description.md
trackler-2.0.6.27 common/exercises/crypto-square/description.md
trackler-2.0.6.26 common/exercises/crypto-square/description.md
trackler-2.0.6.25 common/exercises/crypto-square/description.md
trackler-2.0.6.24 common/exercises/crypto-square/description.md
trackler-2.0.6.23 common/exercises/crypto-square/description.md
trackler-2.0.6.22 common/exercises/crypto-square/description.md
trackler-2.0.6.21 common/exercises/crypto-square/description.md
trackler-2.0.6.20 common/exercises/crypto-square/description.md
trackler-2.0.6.19 common/exercises/crypto-square/description.md
trackler-2.0.6.18 common/exercises/crypto-square/description.md
trackler-2.0.6.17 common/exercises/crypto-square/description.md
trackler-2.0.6.16 common/exercises/crypto-square/description.md
trackler-2.0.6.15 common/exercises/crypto-square/description.md
trackler-2.0.6.14 common/exercises/crypto-square/description.md
trackler-2.0.6.13 common/exercises/crypto-square/description.md
trackler-2.0.6.12 common/exercises/crypto-square/description.md
trackler-2.0.6.11 common/exercises/crypto-square/description.md
trackler-2.0.6.10 common/exercises/crypto-square/description.md
trackler-2.0.6.9 common/exercises/crypto-square/description.md