faqts : Computers : Programming : Languages : Python : Snippets : Maths

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

3 of 3 people (100%) answered Yes
Recently 2 of 2 people (100%) answered Yes

Entry

Reversing long integers

Jul 5th, 2000 10:00
Nathan Wallace, unknown unknown, Hans Nowak, Snippet 119, Brian Lloyd


"""
Packages: maths
"""
"""
> I am attempting to write an efficient Python program which 
> can add an integer to
> its reverse. This is quite easy to do in Lisp and Mathematica 
> but (mostly out of
> curiosity) I wanted to see how one might do this in Python. 
> Converting an
> integer to a string and reversing it and converting back is 
> quite easy (although
> not all of these ops are primitives) but the fact that Long 
> integers have the
> letter L appended means that the loop must include moving the 
> L to the end of
> the reversed string prior to summing. Can anyone think of a 
> particularly clever
> way to do this?
Ok, I'll bite :) I don't know if this is particularly clever,
but it works and should be pretty fast...
"""
import string
def addrev(num, join=string.join, atol=string.atol):
    """Add a long to its reverse"""
    rev=list(str(num)[:-1])
    rev.reverse()
    return num + atol(join(rev, ''))