Came along an interesting puzzle so wanted to share.
Write a function that adds two numbers. You should not use + or any arithmetic operators.
Lets have two number which are fairly large and try to add those two numbers but try a different approach.
987+789 = 1776
Lets just think backwards
987
+ 789
--------
666
Carry : 1110. This is calculated when the first carry is the first digit and the last carry is the last.
Add 1110 and 666 which gives you the ultimate result.
Now lets implement it in source (I am using python)
>>> def sum_without_arithmetic(a,b):
... if b==0:
... return a
... sum = a^b
... carry = (a&b)<<1
... return sum_without_arithmetic(sum, carry)
...
>>> sum_without_arithmetic(987,789)
1776
No comments:
Post a Comment