The Rundown
Dada qualquer entrada x e y , execute uma operação complexa e imprima um resultado correspondente.
Como seu programa deve funcionar
Dada uma entrada x e y na forma z = x + yi , encontre z i-z
Se o valor real absoluto de z i-z for maior que a parte imaginária absoluta, imprima a parte real; vice-versa para o contrário. Se os dois valores forem iguais, imprima um dos valores.
Exemplo
x: 2
y: 0
Portanto:
z = 2
z^(i-z) ~= 0.192309 + 0.159740i
Como a parte real possui um valor absoluto maior que a parte imaginária, o programa retorna
0.192309
Mais exemplos
z = 1+i >> 0.5
z = i >> 1
z = 0.5 >> 1.08787
z = -2+8i >> 2.22964E7
z = -10i >> 3.13112E7
code-golf
math
complex-numbers
Graviton
fonte
fonte
-2+i
poderia ser usado para isso (z^(i-z)=3-4i
então3>-4
vsabs(-4)>abs(3)
).Respostas:
Geléia ,
811 bytesObrigado Johnathan Allan por atualizar a resposta com a alteração das regras.
Experimente online!
fonte
ı_*@µĊ,ḞAÞṪ
e você poderá ter a única entrada válida (dada a alteração para exigir o valor máximo em termos absolutos, de modo que, por exemplo,-2+1j
retorne em-4.0
vez de3.0
).Python 2, 45 bytes
Experimente online - todos os casos de teste
Linguagens de programação costumam usar em
j
vez dei
. Esse é o caso do Python. Veja esta pergunta SO para obter mais informações sobre o porquê.fonte
Mathematica,
2122 bytesEdit: Obrigado a JungHwan Min por salvar 3 btyes
Função pura que espera um número complexo como argumento. Se um número exato for passado, um número exato será retornado (por exemplo,
1/2
dáSqrt[2] Cos[Log[2]]
). A especificação do problema foi editada depois que publiquei minha solução para especificar que o valor absoluto deve ser usado. O melhor que posso fazer para isso éMaximalBy[ReIm[#^(I-#)],Abs][[1]]&
ouLast@MaximalBy[Abs]@ReIm[#^(I-#)]&
, ambos os34
bytes.fonte
Max
não precisa ser a cabeça. Ele retorna o valor máximo, independentemente da profundidade da entradaList
(por exemplo,Max[1, {2, {3}}]
retorna3
). Além disso, a pergunta especifica apenas que você imprime os valores, então não acho que você precisariaN
:Max@ReIm[#^(I-#)]&
funcionaria.Oitava , 29 bytes
Isso define uma função anônima. Também funciona no MATLAB.
Experimente online!
Explicação
A divisão por elementos (
./
) do númeroz^(i-z)
pela matriz[1 i]
e a parte real fornecem uma matriz com as partes reais e imaginárias dez^(i-z)
.fonte
MATL , 10 bytes
Experimente online! Ou verifique todos os casos de teste .
Explicação
Considere a entrada
-2+8i
como um exemplo.fonte
TI-BASIC,
40,32,3129 bytesGuardou um byte graças a @Conor O'Brien
Recebe a entrada como um número complexo na
Z
variável.O TI-BASIC usa sua própria codificação, você pode encontrá-la aqui .
fonte
Pyth, 16 bytes
fonte
Perl 6 , 24 bytes
$_
é o argumento possivelmente complexo;$_ ** (i - $_)
é a expressão a ser calculada;.reals
é umComplex
método que retorna uma lista das partes reais e imaginárias; e finalmente.max
retorna o maior dos dois.fonte
C (CCG),
9379 + 4 (-lm
) =9783 bytesEconomizou 14 bytes graças a @ceilingcat!
Incluindo o cabeçalho
complex.h
é mais longa que isso ¯ \ _ (ツ) _ / ¯Experimente online!
fonte
-
,l
, em
.gcc file.c -o exe
, por isso, esta bandeira adiciona 4 bytes: espaço,-
,l
, em
. (Pelo menos é assim que eu vejo contado ao compilar.)Ruby ,
2535 bytesEDIT : corrigido para cumprir com a nova regra de valor absoluto.
Experimente online!
Isso cria uma função anônima.
fonte
TI-Basic,
1916 bytesreal(
eimag(
são tokens de dois bytes.Executar com
5+3i:prgmNAME
(5+3i
sendo o argumento,NAME
sendo o nome do programa).fonte
R, 38 bytes
Função anônima. Toma um (possivelmente) número complexo
z
, leva-lo à potência especificada, e, em seguida, retorna omax
daRe
al eIm
partes aginary.fonte
Axioma, 60 bytes
código de teste e resultados; sigo como o outro a versão precedente da pergunta ...
fonte
C # - 189 bytes
Legível:
Explicação: Decidiu não usar nenhuma biblioteca Complexa.
Seja igual am eeu um Onde
EntãoR ( zi - z) = m cosuma e I ( zi - z) = m sinuma
O valor absoluto máximo pode ser determinado peloporqueuma e pecadouma termos, sendo estes iguais em 1 12√ (daí o teste 2 c2< 1 )
Como mencionado, aumentar para um expoente complexo depende da escolha de um corte de ramificação específico (por exemplo,z= 1 poderia ser eeu π ou e3 i π - elevando isso para Eu dá uma parte real de e- π ou e- 3 π respectivamente), no entanto, acabei de usar a convenção de t ∈ [ 0 , 2 π) conforme a pergunta.
fonte
APL (Dyalog Unicode) , 18 bytes
18 bytes ( https://github.com/abrudz/SBCS/ )
28 bytes (UTF-8)
⍵ é um número complexo ajb = a + bi
Experimente online!
fonte