Jump to content

Long multiplication: Difference between revisions

→‎{{header|Python}} (Trans Haskell): Simplified one expression in terms of reduce, pylinted, added {Works with}
(added Ol)
(→‎{{header|Python}} (Trans Haskell): Simplified one expression in terms of reduce, pylinted, added {Works with})
Line 4,378:
Shorter version:
{{trans|Haskell}}
{{Works with|Python|3.7}}
<lang python>#!/usr/bin/env python
<lang python>'''Long multiplication'''
 
from functools import reduce
 
 
def digits(x):
'''Digits of x as a list of integers.'''
return [int(c) for c in str(x)]
 
 
def mult_table(xs, ys):
'''Rows of all products.'''
return [[x * y for x in xs] for y in ys]
 
 
def polymul(xs, ys):
'''List of specific products.'''
return map(lambda *vs: sum(filter(None, vs)),
return resultmap(
*[[0] * i + zs for i, zs in enumerate(mult_table(xs, ys))])
return map( lambda *vs: sum(filter(None, vs)),
*[
[0] * i + zs for i, zs in
*[[0] * i + zs for i, zs in enumerate(mult_table(xs, ys))])
]
)
 
 
def longmult(x, y):
'''Long multiplication.'''
result = 0
return reduce(
for v in polymul(digits(x), digits(y)):
resultlambda =acc, resultv: acc * 10 + v,
for v in polymul(digits(x), digits(y)):,
return result
result = 0
)
 
 
if __name__ == "'__main__"':
print longmult(2**64, 2**64)</lang>
longmult(2 ** 64, 2 ** 64)
)</lang>
 
=={{header|Ol}}==
9,659

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.