Dados dois números inteiros, que podem ser negativos, zero ou positivos, a
e b
(tirados em qualquer formato razoável, incluindo a inserção de um número complexo simples ), converta-o para a + bi
onde i
está o número imaginário (raiz quadrada do número negativo). Em seguida, eleve-o à potência de uma terceira variável de entrada (número inteiro positivo), c
como em . Você deve acabar com algo parecido . Você deve então gerar ou retornar e em qualquer formato razoável ( incluindo a saída de um número complexo simples ).(a + bi)c
d + ei
d
e
A entrada e a saída podem ser capturadas ou enviadas em qualquer ordem.
Exemplos:
5, 2, 2 -> 21, 20
1, 4, 2 -> -15, 8
-5, 0, 1 -> -5, 0
Respostas:
Mathematica, 17 bytes
Experimente online!
-8 bytes de alefhalpha
mas ........ regras mudaram ...... então
Mathematica, 5 bytes
fonte
{Re@#,Im@#}&
->ReIm
@#&
.#^#2&
ou apenasPower
.Python 3 , 3 bytes
Experimente online!
Entrada e saída como números complexos.
Python 3 , 47 bytes
Experimente online!
Entrada e saída como números inteiros
Python 2 ,
6260 bytes-2 bytes graças a @Leonhard
Experimente online!
não usa tipo de número complexo
fonte
Javascript (ES6),
5150 bytesf(a)(b)(c)
[d, e]
Explicação
fonte
Pari / GP , 36 bytes
Experimente online!
Pari / GP , 36 bytes
Experimente online!
fonte
Na verdade , 1 byte
Experimente online!
Observe que as regras foram alteradas e os números complexos são do tipo de E / S válidos (infelizmente isso transforma a postagem em um desafio "execute esta exponenciação"). Resposta original abaixo.
Na verdade , 3 bytes
Experimente online!
Retorna os valores separados por uma nova linha. Pega as entradas na ordem inversa e retorna os resultados na ordem inversa (consulte o link do tio).
fonte
Geléia , 1 byte
Experimente online!
Agradeço ao Sr. Xcoder por me alertar sobre atualizações de regras (-6 como resultado).
Agradeço a alguém por me alertar sobre atualizações de regras (-2 como resultado).
Primeiro argumento:
(a+bj)
Segundo argumento:
c
Retorna:
(d+ej)
fonte
ḅı*
, como as regras foram alteradas e agora você pode gerar um número complexo simples.R , 3 bytes
Isso está se tornando chato. Se a entrada e a saída são permitidas como um número complexo, há um recurso interno para uma função de energia.
Por exemplo:
ou
fonte
05AB1E ,
20191716 bytesExperimente online! Toma três entradas separadas na ordem
b, a, c
e gera uma matriz[d, e]
. Editar: salvou 2 bytes graças a @Datboi. Guardou 1 byte graças a @Adnan. Explicação:fonte
'jì+³m
.1 0‚
-loTS
por -2 bytes :)P
vetoriza automaticamente, assim você não precisa do€
.C # (.NET Core) ,
6238 bytesExperimente online!
fonte
.Real
e .Imaginary` na sua resposta. De acordo com a regra " Você deve enviar ou retornar,d
ee
em qualquer formato razoável (sem incluir a saída de um número complexo e simples) ", você não pode simplesmente enviar o Número complexo.Pitão,
51252 bytesToma em
c
primeiro lugar, seguido pora+bj
.7 bytes de clichê porque aparentemente a saída como um número imaginário não é permitida.Foi re-permitido! Viva! E, considerando que um número complexo é uma entrada razoável, podemos cortar mais 3 bytes!Soluções anteriores:
Quando números complexos não eram entradas razoáveis.
Quando números complexos não eram resultados razoáveis.
Suíte de teste.
fonte
05AB1E , 1 byte
Experimente online!
Entrada:
c\n(a+bj)
Saída:
(d+ej)
fonte
'jì+³m
é uma maneira diferente de calcular o número.J,
10,7, 1 bytesToma
c
como argumento certo e o número complexoajb
(como você representaa + bi
em J) como argumento esquerdo.Experimente online!
Outras soluções
7 bytes
Toma a entrada de número complexo como uma lista.
10 bytes
Isso produziu o
a + bi
na listaa b
.Eu queria tentar algo fofo,
^~&.(j./)
mas o inverso dej./
obviamente não está definido. Na verdade,^~&.(+.inv)
funciona e você pode criar o^&.(+.inv)
que também é de 10 bytes se você reverter a ordem em que recebe os argumentos.fonte
TI-BASIC,
25228 bytesPega o número complexo e o expoente como entrada e armazena a saída
Ans
como um número complexo. Queda drástica de bytes devido a restrições menores na entrada / saída.fonte
imag({iAns,Ans
na última linha (comi
o número complexo i ).imag({i,1}(A+Bi)^C
.6502 máquina de código de subrotina,
199187185 bytesEste é um código independente da posição, basta colocá-lo em algum lugar da RAM e chamá-lo com uma
jsr
instrução.A rotina toma a base (complexa) como dois números inteiros assinados de 16 bits (complemento de 2, little endian) em
$fb/$fc
(real) e$fd/$fe
(imaginário), e o expoente como um número inteiro de 8 bits não assinado noY
registro.O resultado é retornado em
$26/$27
(real) e$28/$29
(imaginário).Explicação
Esse ainda é um desafio interessante na CPU 6502, pois não há instruções para multiplicar. A abordagem é direta, implementando uma multiplicação complexa e executando-a quantas vezes for exigida pelo expoente. O golfe é feito evitando sub-rotinas, criando um tipo de "espaguete de ramificação"; portanto, o código para fazer uma multiplicação simples de 16 bits, necessária várias vezes, é reutilizado com a menor sobrecarga possível. Aqui está a desmontagem comentada:
Exemplo de programa usando-o (C64, fonte de montagem em ca65 -syntax):
Demonstração online
Uso:
sys49152,[a],[b],[c]
, por exemplo,sys49152,5,2,2
(Saída:21+20i
)fonte
Dyalog APL , 10 bytes
Experimente online!
a
é argumento à esquerda,b
é argumento à direita ec
via prompt de entrada.Retorna um número complexo no formato
dJe
.fonte
MATL , 1 byte
As entradas são
a+jb
,c
.Experimente online!
Versão antiga: entrada e saída não complexas, 8 bytes
Ordem de entrada é
b
,a
,c
.Experimente online!
Explicação
fonte
C (gcc) , 34 bytes
Experimente online!
fonte
8o , 38 bytes
Código
O SED (diagrama de efeito de pilha) é:
c a b -- (a + bi) ^ c
Aviso :
a + bi
é deixado no r-stack , mas isso não afeta os cálculos subsequentes.Versão ungolfed com comentários
Exemplo e uso
Saída do código anterior
fonte
Oitava / MATLAB, 6 bytes
Função anônima que insere dois números e gera sua potência.
Experimente online !
Versão antiga: entrada e saída não complexas, 30 bytes
Função anônima que insere três números e gera uma matriz de dois números.
Experimente online!
fonte
Perl 6 ,
29 26 20 1911 bytesTente
Tente
Tente
Tente
Com a alteração das restrições de produção, é possível reduzir ainda mais:
Tente
A
***
peça é analisada como se** *
o**
operador infix fosse maior que o*
operador infix.Expandido:
fonte
(*+* *i)***
.R, 25 bytes
mais simples - uma vez que o complexo de saída é permitido.
fonte
Casio-Basic, 6 bytes
Altere as regras para permitir entrada e saída, pois números complexos tornam isso significativamente mais curto.
3 bytes para a função, +3 para inserir
a,b
na caixa de parâmetros.fonte