### Communities

tag:snake search within a tag
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
created:<1w created < 1 week ago
post_type:xxxx type of post
Challenges

# Multiply complex numbers.

+6
−2

Multiply complex numbers. 2 space-seperated ones will be input, as follows: (update: you can replace i with j or some other symbol if needed)

a+bi -a+bi a-bi -a-bi

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 4-5i -> 32+1i
• -4+9i 2-2i -> 10+26i
• -4+9i 2+2i -> -26+10i
• -3+0i 10+0i -> -30+0i
• 0+1i 0+1i -> -1+0i
Why does this post require moderator attention?
Why should this post be closed?

First test case is incorrect (3 comments)

+4
−0

# Python 3, 98 bytes

print(str(eval("("+input().replace(" ",")*(").replace("i","j")+")")).strip("()").replace("j","i"))


Try it online!

Since the input format is restrictive, I may as well just spam replace and abuse eval.

Why does this post require moderator attention?

This can be shortened to 94 bytes. (1 comment)
+3
−0

# JavaScript (Node.js), 9996 69 bytes

s=>([a,b,c,d]=s.match(/-?\d+/g),a*c-b*d+(a=a*d+b*c,a<0?'':'+')+a+'i')


Try it online!

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.

Why does this post require moderator attention?

+2
−0

# Ruby, 25 bytes

->e{e.to_c*e[/ .*/].to_c}


Try this online!

Why does this post require moderator attention?

+1
−0

# Sidef, 25 bytes

{eval .split.join(" * ")}

{eval .split.join(" * ")}
{                       }  # Create anonymous code block
.split.join(" * ")   # splits on whitespace and joins with " * "
.                    # equivalent to _.split.join, where _ is the topic
# variable, which is an implicit name for the block arg
eval                      # eval


Try it online!

Complex literals are built like a:b.

Why does this post require moderator attention?

+1
−0

# Ruby, 35 bytes

->a{a.split.map{eval _1}.reduce :*}


Try it online!

Right tool for the job, I suppose.

uses ruby 2.7+ features, so tio link will look different.

Why does this post require moderator attention?

+1
−0

# Python 3, 63 bytes

print(str(eval(f"({input().replace(' ',')*(')})")).strip("()"))


Try it online!

Similar to hyper-neutrino‭'s answer. Doesn't replace i by j and back, and uses f-string instead of strings and + to make it a bit shorter.

Why does this post require moderator attention?

+1
−0

# J, 2 bytes

*/


Try it online!

For complex numbers with 0 as the second part, J will represent them as ints, but they are treated the same.

Why does this post require moderator attention?