Dada una ecuación lineal mx+n
, retorno n
y m
. Sin embargo, la ecuación puede estar en cualquiera de los siguientes formatos:
5x+2 -> 5 2
5x-2 -> 5 -2
5x -> 5 0
-2 -> 0 -2
x -> 1 0
Aquí están los formatos, donde cada uno ?
representa un entero positivo escrito sin ceros a la izquierda
?x+?
?x-?
-?x+?
-?x-?
x+?
x-?
?
-?
?x
-?x
x
Todos estos casos deben ser manejados.
Especificaciones:
- Puede suponer que la ecuación está en uno de los formatos anteriores, es decir, coincide con la expresión regular
^(-?[123456789]\d*)?x([+-][123456789]\d*)?|-?[123456789]\d*$
.
Casos de prueba:
-2x+3 -> -2 3
44x -> 44 0
-123 -> 0 -123
x -> 1 0
-1x -> -1 0
1 +2
una salida válida para1x+2
?L
al final de los números si se vuelven demasiado grandes. ¿Debería permitirse esto?7x
se emite como7 0
pero7
se emite como justo7
?Respuestas:
Python 2 , 55 bytes
Pruébalo en línea!
Utiliza la evaluación de código incorporada de Python. La entrada se formatea como un número complejo al reemplazarla
x
conj
la unidad compleja de Python. Debido a que solo2j
se reconocen literales como , pero noj
o-j
, la variablej
se asigna1j
para cubrirlos.Desafortunadamente, Python no parece tener una función integrada para convertir un número complejo en un par de reales.
fuente
Mathematica, 16 bytes
Inspirado por la respuesta de xnor's Python 2 :
Toma la entrada como una expresión literal (no una cadena) y devuelve un par de números. Funciona haciendo
x
un número complejo y luego tomando las partes reales e imaginarias: el único bit no obvio es multiplicar por i para comenzar, para obtener la salida en el orden correcto.También podemos usar
para 14 bytes (¡empatado con Jelly!), pero establecer el valor
x
igual a -i antes de tomar la entrada, en lugar de simplemente reemplazarx
después, se siente como hacer trampa ...fuente
ReIm
función, siempre lo he estado haciendo{Re[#],Im[#]}&
. Has ayudado mucho allí.ReIm
solo se introdujo en la versión 10.1, por lo que es posible que su copia de Mathematica no lo tenga.JavaScript (ES6),
5348 bytesCasos de prueba
Mostrar fragmento de código
fuente
-x
probar mi expresión regular-x
no es una entrada válida.sed ,
4442 bytesPruébalo en línea!
I / O: uno por línea.
-2 bytes gracias a @KritixiLithos.
fuente
t
y en:
lugar de usar laa
etiquetaJalea ,
1814 bytesTest suite en Pruébelo en línea!
¿Cómo?
fuente
PHP, 73 bytes
Pruébalo en línea!
PHP, 91 bytes
trabaja también con
-x
Pruébalo en línea!
fuente
Mathematica, 23 bytes
Pruébalo en línea
copia y pega con ctrl-v este código
y presiona shift + enter para ejecutar
fuente
Python 2 , 71 bytes
Pruébalo en línea!
fuente
Mathematica, 33 bytes
Función pura que toma una expresión en el formato esperado (nota: no una cadena, sino una expresión pura como
-2x+3
), y devuelve un par ordenado de enteros con el coeficiente constante que aparece primero (por ejemplo,-2x+3
retornos{3,-2}
).El builtin
CoefficientList
(que funciona para polinomios de cualquier grado) hace el trabajo pesado; su comportamiento predeterminado es devolver constantes como listas de longitud 1, por lo/.{a_}:>{a,0}
que anula eso y hace que el0
coeficiente dex
aparezca explícitamente.fuente
Retina , 38 bytes
Definitivamente se puede mejorar.
Posiblemente estirando cómo se nos permite formatear la salida. Simplemente genera una ecuación completa, como en
n
ym
separada porx+
Pruébalo en línea!
fuente
x-1
[^+-]*
con\w*
Octava , 45 bytes
Pruébalo en línea!
Evaluar la expresión, con
x
reemplazado por complejoj
. Octava es muy flexible cuando se trata de expresiones complejas, conj
,1j
,i
y1i
todas equivalentes (con la ventaja de que1j
y1i
no puede ser sobrescrito por variables, pero eso es irrelevante para este desafío). La expresión en línea se utiliza para crear una lista[imag(u) real(u)]
conu
el número complejo.Inicialmente quería probar un enfoque más idiomático, utilizando el incorporado
sym2poly
. Por ejemplo (ya en 47 bytes para asegurarse de que0*x
se maneja):Sin embargo, éste falló en el caso de
x
sin coeficiente. Al final, una configuración real / compleja comoxnor
resultó ser óptima.fuente
MATL , 12 bytes
Pruébalo en línea!
Respuesta de Port of my Octave, pero por supuesto adaptada para compacidad en MATL. Explicación:
fuente
C (gcc) ,
145138112 bytesPruébalo en línea!
Definitivamente se puede acortar, ¡pero no lo veo ahora!
fuente
char *s
2. ¿No puede eliminar espacios en blanco?printf("%d %d",s[i]-'x'?:a,s[i=L?L-s:i]-'x'?a:b);
lugar deif(L!=0)i=(int)(L-s);printf("%d %d",s[i]=='x'?a:0,s[i]=='x'?b:a);
y enindex()
lugar destrchr()