Help needed

Denis McMahon denismfmcmahon at gmail.com
Sun Nov 30 13:28:55 CET 2014


On Sat, 29 Nov 2014 11:35:18 -0800, Gautam R Bharadwaj wrote:

> Here is the code in python, this code arranges the alphabets in
> descending order and now I want to encode each alphabet with 0 and next
> alphabet with 1, then 00,01,10,11,000,001 and so on. Please help me with
> that.
> 
> //////////////////////////////////////////////////////////
> //////////////////CODE////////////////////////
> 
> from collections import defaultdict import string text ='intalks is an
> organization comprised of passionate
> students'.lower().translate(None,string.punctuation+' ')
> c = defaultdict(int)
> c.update({letter:0 for letter in string.lowercase[:26]})
> for letter in text:
>         c[letter] += 1
> 
> for letter,freq in sorted(c.iteritems(),key=lambda (l,f): (-f,l)):
>         print freq, letter

If you can confirm that the following:

0001111000011100001011001111010100001111100100110010000101001100000000110101010100001001111000011001000100001110

is the output you want in terms of the original string encoded according 
to your encoding scheme, then your problem domain currently is two fold:

a) To write a function that generates the encoding
b) To apply the encoding to the original string

To achieve the former, I used a combination of determining a string 
length, converting a string to an integer using base 2, converting a 
number to a string in binary form, and generating arbitrary length 
strings of zeroes.

Not necessarily all done in the most pythonic of manners I must admit. 
Have you attempted anything to generate you string of encodings yet? 
Because until you show a good faith effort, you don't my solution to your 
homework problem for free.

To achieve the latter, I took the encodings and strung them together 
according to the letters they represented in the original string.

-- 
Denis McMahon, denismfmcmahon at gmail.com



More information about the Python-list mailing list