Computation Contest #9 [2 SBI]

Here you can solve interesting problems using whatever programming language you like. Also you will earn SBI and sometimes STEM by doing so.
Also you might learn new things by doing so.
The tasks will be rather hard to solve without a programmable computer and some programming skills, but if you want to add a few million numbers by hand or similar, I would still give you the reward.
↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓

Rules

No upvote, No resteem, No follow required!

I will give the prize randomly to those who solved the problem.

If two pieces of code are to closely related I might consider the later of them as copied which results in no prize for that person.

You have 12 days to solve it.

Even though this is about computation I will also accept algebraic solutions if you find one.

In order to get accepted you need to somehow attach your code.

↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓

Problem

Imagine you have to write a program for a computer which is not able to multiply numbers and can only do addition, subtraction, comparison and bitwise operations. So you must write your own function to multiply integers.
Imagie further that this program needs to multiply numbers (that can get pretty big) very often, so that processing speed is crucial and the intuitive algorithm of simple repeated addition is not applicable.

Your task now is to write that function which multiplies two integers without using the "*" operator.

↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓

To everyone who already participated in a past contest, come back today and try a new problem(tell me if you don't want to be tagged):
@crokkon @kaeserotor @lallo @ninahaskin @portalmine @tonimontana

In case no one gets a result(which I doubt), I will give away the prize to the person who makes the most constructive description why the problem is too hard in your opinion.

↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓↑↓

@contrabourdon sponsors my contests with 2 STEEM weekly.
You can support him by using a witness vote on untersatz, so he can further support this and other contests.



0
0
0.000
11 comments
avatar

A member bonus $trendotoken tip, and !trendovoter, for @quantumdeveloper from MAPXV! These bonuses are for members, selected at random, and last for a few days.

Also consider our MAPR fund and MAXUV vote bonds too.
MAP Steem Fintech: growing your STEEM without SP.

0
0
0.000
avatar
(Edited)

https://github.com/billyb2/quantum-developer-contests/blob/master/comp-contest-%239.html
Saves as much computation power as possible by limiting the amount of operations.

Also works for negative multiplication.

Unfortuantely, it's slows down for much larger numbers, and is in general slower since it runs in the browser. It tries to improve efficiency as well as possible, however, by having adding the larger number to itself instead of just picking the first number.

0
0
0.000
avatar

What you did is just implementing "the intuitive algorithm of simple repeated addition" which I mentioned in the problem which is as you correctly discovered very slow because you need number2 additions.
You need to find something better.

By the way I ignore the speed differences of individual languages in these contests, because the algorithm would still be slow in any other language.

0
0
0.000
avatar

Thanks for the information, I'll work on redoing my answer now!

0
0
0.000
avatar

I'll share with you a solution that I found in an old exam:
https://github.com/gravlaks/multiplication-recursive/blob/master/multiplication.py

It's a neat recursive solution, but sadly doesn't solve your problem as big numbers lead to "maximum recursion depth error" and computation is slow.

0
0
0.000
avatar
(Edited)

What you did is just implementing "the intuitive algorithm of simple repeated addition" which I mentioned in the problem which is as you correctly discovered very slow because you need b calls to func1(you could have written there just a+b instead of func1(a,b). Addition is allowed).

You might also want to think about what happens when you use negative numbers.

0
0
0.000