Dada una ecuación lineal mx+n, retorno ny 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 +2una salida válida para1x+2?Lal final de los números si se vuelven demasiado grandes. ¿Debería permitirse esto?7xse emite como7 0pero7se 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
xconjla unidad compleja de Python. Debido a que solo2jse reconocen literales como , pero nojo-j, la variablejse asigna1jpara 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
xun 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
xigual a -i antes de tomar la entrada, en lugar de simplemente reemplazarxdespués, se siente como hacer trampa ...fuente
ReImfunción, siempre lo he estado haciendo{Re[#],Im[#]}&. Has ayudado mucho allí.ReImsolo 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
-xprobar mi expresión regular-xno es una entrada válida.sed ,
4442 bytesPruébalo en línea!
I / O: uno por línea.
-2 bytes gracias a @KritixiLithos.
fuente
ty en:lugar de usar laaetiquetaJalea ,
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
-xPrué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+3retornos{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 el0coeficiente dexaparezca 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
nymseparada porx+Pruébalo en línea!
fuente
x-1[^+-]*con\w*Octava , 45 bytes
Pruébalo en línea!
Evaluar la expresión, con
xreemplazado por complejoj. Octava es muy flexible cuando se trata de expresiones complejas, conj,1j,iy1itodas equivalentes (con la ventaja de que1jy1ino 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)]conuel 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*xse maneja):Sin embargo, éste falló en el caso de
xsin coeficiente. Al final, una configuración real / compleja comoxnorresultó 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 *s2. ¿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()