Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Generate a pseudo-poem that would contain 160 bits of recoverable information [closed]

I have 160 bits of random data.

Just for fun, I want to generate an English pseudo-poem to "store" this information in. I want to be able to recover this information from the poem. ("Poem" here is a vague term for any kind of poetry.)

Note: This is not a security question, I don't care if someone else will be able to recover the information or even detect that it is there or not.

Criteria for a better poem:

  • Better aestetics
  • Better rhyme and foot
  • Uniqueness
  • Shorter length

I'd say that the acceptable poem is no longer than three stanzas of four lines each. (But the other, established forms of poetry, like sonnets are good as well.)

I like this idea, but, I'm afraid, that I'm completely clueless in how to do English computer-generated poetry. (I programmed that for Russian when I was young, but looks like that experience will not help me here.)

So, any clues?

Note: I already asked a similar question. I want to try both approaches. Note how good poem criteria are different from the good phrase in parallel question. Remember, this is "just for fun".

Also, I have to note this: There is an RFC 1605 on somewhat related matters. But it do not suggest any implementation details, so it is not quite useful for me, sorry. <g>

like image 663
Alexander Gladysh Avatar asked Jan 15 '11 06:01

Alexander Gladysh


2 Answers

My naive solution/algorithm:

  1. Write a beautiful 160-word poem
  2. Take out a thesaurus, and find an equivalent word for each word in your poem.
  3. The value each word in your original poem is 0 and the value of the word that you found in the thesaurus is 1
  4. Now, encode your 160 bits into the poem

Done.

like image 111
Jeffrey Greenham Avatar answered Sep 27 '22 18:09

Jeffrey Greenham


First of all, you need to implement a program, which generates 1 valid and acceptable poem based on markov's model of your language.

Then, you modify it this way: Let's leave first word as-is. Starting from the second word, there are lots of variants possible based on markov's model, sorted from highest probability to lowest. Usually you choose the first, or something like random(10) word and display it. Now you take 2-8 bits of your message, and use this word.

On the receiver side you'll have the same model, and you will see which word you've selected at each step out of all possibilities, and will be able to recover your bits of message.

like image 20
BarsMonster Avatar answered Sep 27 '22 18:09

BarsMonster