·

# CipheringPoems

For the 26th day of NaPoWriMo/NaPoGenMo 2024, the poem is being generated through Transposition ciphers coded in Python.

`"A Transposition cipher is one in which the order of characters is changed to obscure the message."``https://math.libretexts.org/Bookshelves/Applied_Mathematics/Math_in_Society_(Lippman)/16%3A_Cryptography/16.03%3A_Transposition_Ciphers`

## Inputs

### Input

``````Input 1:
[['H' 'O' 'E']
['T' 'W' 'N']
['S' 'D' 'D']
['E' 'S' 'Y']
['E' 'R' 'E']]

Input 2:
[['O' 'R' 'E']
['B' 'A' 'R']
['E' 'N' 'D']
['S' 'T' 'Y']
['X' 'E' 'A']]
``````

### Transposed Output

``````Transposed 1:
[['H' 'T' 'S' 'E' 'E']
['O' 'W' 'D' 'S' 'R']
['E' 'N' 'D' 'Y' 'E']]

Transposed 2:
[['O' 'B' 'E' 'S' 'X']
['R' 'A' 'N' 'T' 'E']
['E' 'R' 'D' 'Y' 'A']]
``````

## Output

``````Real Phrase:
['T' 'H' 'E' 'S' 'E']
['W' 'O' 'R' 'D' 'S']
['N' 'E' 'E' 'D' 'Y']

Real Phrase 2:
['B' 'O' 'X' 'E' 'S']
['A' 'R' 'E' 'N' 'T']
['R' 'E' 'A' 'D' 'Y']
``````

## Python Code

``````import numpy as np

def transformation(arr1):
print(f'Original Array:\n{arr1}')

arr1_transpose = arr1.transpose()

print(f'Transposed Array:\n{arr1_transpose}')

#Similar to the Row Operations, we can use this to rescramble the text to make the phrase "Boxes Arent Ready" & "These Words Needy"

#represent the scrambled phrases

cipher0 = arr1_transpose[0]
cipher1 = arr1_transpose[1]
cipher2 = arr1_transpose[2]

#unscrambles the words contained in the array

[cipher0[0],cipher0[1],cipher0[2],cipher0[3],cipher0[4]] = [cipher0[1],cipher0[0],cipher0[4],cipher0[2],cipher0[3]]
[cipher1[0],cipher1[1],cipher1[2],cipher1[3],cipher1[4]] = [cipher1[1],cipher1[0],cipher1[4],cipher1[2],cipher1[3]]
[cipher2[0],cipher2[1],cipher2[2],cipher2[3],cipher2[4]] = [cipher2[1],cipher2[0],cipher2[4],cipher2[2],cipher2[3]]

print(f'Real Phrase:')
print(cipher0)
print(cipher1)
print(cipher2)

#Making Micro Poems through Matrix Transposition Ciphers

transformation(np.array([["H", "O", "E"],["T", "W", "N"],['S',"D","D"],["E","S","Y"],["E","R","E"]]))
transformation(np.array([["O", "R", "E"],["B", "A", "R"],['E',"N","D"],["S","T","Y"],["X","E","A"]]))
``````