Multiply complex numbers.
Multiply complex numbers. 2 spaceseperated ones will be input, as follows: (update: you can replace i with j or some other symbol if needed)
a+bi
a+bi
abi
abi
where a and b are integers written in base 10.
You are expected to output in the same format.
For those unfamiliar: $i$ is the imaginary constant, the value of $\sqrt{1}$, and a complex number is the sum of a real number and an imaginary number.
Shortest code following the rules wins.
EDIT: test cases:

3+4i 45i
>32+1i

4+9i 22i
>10+26i

4+9i 2+2i
>26+10i

3+0i 10+0i
>30+0i

0+1i 0+1i
>1+0i
[Python 3], 98 bytes …
6mo ago
[JavaScript (Node.js)], 99 96 …
7mo ago
Ruby, 25 bytes ```ruby >e …
6d ago
[Ruby], 35 bytes > …
6mo ago
J, 2 bytes ``` / ``` T …
1d ago
5 answers
Python 3, 98 bytes
print(str(eval("("+input().replace(" ",")*(").replace("i","j")+")")).strip("()").replace("j","i"))
Since the input format is restrictive, I may as well just spam replace and abuse eval
.
JavaScript (Node.js), 99 96 69 bytes
s=>([a,b,c,d]=s.match(/?\d+/g),a*cb*d+(a=a*d+b*c,a<0?'':'+')+a+'i')
This regex is probably the best way to get the numbers.
Also, for some reason, JavaScript math works with strings of numbers, so that's convenient.
0 comment threads
Ruby, 35 bytes
>a{a.split.map{eval _1}.reduce :*}
Right tool for the job, I suppose.
uses ruby 2.7+ features, so tio link will look different.
0 comment threads
J, 2 bytes
*/
For complex numbers with 0
as the second part, J will represent them as ints, but they are treated the same.
3 comment threads