El resumen
Dada cualquier entrada x e y , realice una operación compleja e imprima el resultado correspondiente.
Cómo debería funcionar su programa
Dada una entrada x e y en la forma z = x + yi , encuentre z i-z
Si el valor real absoluto de z i-z es mayor que la parte imaginaria absoluta, imprima la parte real; viceversa, al revés. Si ambos valores son iguales, imprima uno de los valores.
Ejemplo
x: 2
y: 0
Por lo tanto:
z = 2
z^(i-z) ~= 0.192309 + 0.159740i
Como la parte real tiene un valor absoluto mayor que la parte imaginaria, el programa devuelve
0.192309
Más ejemplos
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
fuente
fuente
-2+i
podría usarse para eso (z^(i-z)=3-4i
entonces3>-4
vsabs(-4)>abs(3)
).Respuestas:
Jalea ,
811 bytesGracias Johnathan Allan por actualizar la respuesta con el cambio de reglas.
Pruébalo en línea!
fuente
ı_*@µĊ,ḞAÞṪ
y es posible que tengas la única entrada válida (dado el cambio para requerir el valor máximo en términos absolutos, de modo que, por ejemplo,-2+1j
devuelva en-4.0
lugar de3.0
).Python 2, 45 bytes
Pruébelo en línea : todos los casos de prueba
Los lenguajes de programación a menudo se usan en
j
lugar dei
. Ese es el caso en Python. Vea esta pregunta SO para obtener más información sobre por qué.fuente
Mathematica,
2122 bytesEditar: Gracias a JungHwan Min por guardar 3 btyes
Función pura que espera un número complejo como argumento. Si se pasa un número exacto, se devolverá un número exacto (por ejemplo,
1/2
daSqrt[2] Cos[Log[2]]
). La especificación del problema se editó después de publicar mi solución para especificar que se debe usar el valor absoluto. Lo mejor que se me ocurre para eso esMaximalBy[ReIm[#^(I-#)],Abs][[1]]&
oLast@MaximalBy[Abs]@ReIm[#^(I-#)]&
, ambos34
bytes.fuente
Max
No necesita ser la cabeza. Devuelve el valor máximo sin importar cuán profunda sea la entradaList
(por ejemplo,Max[1, {2, {3}}]
retornos3
). Además, la pregunta solo especifica que imprime los valores, por lo que no creo que necesiteN
:Max@ReIm[#^(I-#)]&
funcionaría.Octava , 29 bytes
Esto define una función anónima. Funciona también en MATLAB.
Pruébalo en línea!
Explicación
En cuanto a elementos, dividir (
./
) el númeroz^(i-z)
entre la matriz[1 i]
y tomar la parte real da una matriz con las partes real e imaginaria dez^(i-z)
.fuente
MATL , 10 bytes
Pruébalo en línea! O verificar todos los casos de prueba .
Explicación
Considere la entrada
-2+8i
como un ejemplo.fuente
TI-BASIC,
40,32,3129 bytesSalvó un byte gracias a @Conor O'Brien
Toma la entrada como un número complejo en la
Z
variable.TI-BASIC usa su propia codificación, puede encontrarla aquí .
fuente
Pyth, 16 bytes
fuente
Perl 6 , 24 bytes
$_
es el argumento posiblemente complejo;$_ ** (i - $_)
es la expresión a calcular;.reals
es unComplex
método que devuelve una lista de las partes reales e imaginarias; y finalmente.max
regresa el más grande de los dos.fuente
C (GCC),
9379 + 4 (-lm
) =9783 bytes¡Guardado 14 bytes gracias a @ceilingcat!
Incluir el encabezado
complex.h
es más largo que eso ¯ \ _ (ツ) _ / ¯Pruébalo en línea!
fuente
-
,l
, ym
.gcc file.c -o exe
, por lo que este parámetro se añade 4 bytes: espacio,-
,l
, ym
. (Por lo menos así es como lo veo contó al compilar.)Ruby ,
2535 bytesEDITAR : corregido para cumplir con la nueva regla de valor absoluto.
Pruébalo en línea!
Esto crea una función anónima.
fuente
TI-Basic,
1916 bytesreal(
yimag(
son tokens de dos bytes.Ejecutar con
5+3i:prgmNAME
(5+3i
siendo el argumento,NAME
el nombre del programa).fuente
R, 38 bytes
Función anónima. Toma una (posiblemente) número complejo
z
, se lo lleva a la potencia especificada, y luego devuelve elmax
de laRe
col yIm
partes aginary.fuente
Axioma, 60 bytes
código de prueba y resultados; sigo como el otro la versión precedente de la pregunta ...
fuente
C # - 189 bytes
Legible:
Explicación: Decidió no usar ninguna biblioteca compleja.
EntoncesR ( zi - z) = m cosuna y Yo ( zi - z) = m sinuna
El valor absoluto máximo puede determinarse mediantecosuna y pecadouna términos, siendo estos iguales en 12√ (de ahí la prueba 2 c2< 1 )
Como se mencionó, elevar a un exponente complejo depende de elegir un corte de rama particular (p. Ej.z= 1 podría ser mii π o mi3 i π - elevando esto a yo da una parte real de mi- π o mi- 3 π respectivamente), sin embargo, acabo de utilizar la convención de t ∈ [ 0 , 2 π) según la pregunta
fuente
APL (Dyalog Unicode) , 18 bytes
18 bytes ( https://github.com/abrudz/SBCS/ )
28 bytes (UTF-8)
⍵ es un número complejo ajb = a + bi
Pruébalo en línea!
fuente