• Publicidad

Validar polinomio

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Validar polinomio

Notapor dacons » 2006-05-03 15:29 @687

Muy buenas a todos, estoy intentando validar un polinomio que puede tener dos estructuras:
y=x3+25x+3 o y=6x3-6x2+5x

Lo he intentado así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. if (   $pol =~ /^[y]{1}[=]{1}[x]{1}[2]{1}[+]{1}[0-9]{1, }[x]{1}[+]{1}[0-9]{1, }$/
  2.     || $pol =~ /^[y]{1}[=]{1}[0-9]{1, }[x]{1}[3]{1}[-]{1}[0-9]{1, }[x]{1}[2]{1}[0-9]{1, }[x]{1}$/ ) {
  3.     print "Polinomio válido";
  4. }
  5. else {
  6.     print "Polinomio no válido";
  7. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

pero al hacer la prueba con un polinomio válido no entra. ¿Por qué?
dacons
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2006-02-27 04:15 @219

Publicidad

Notapor explorer » 2006-05-03 16:32 @731

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. if (   $pol =~ /^[y]{1}[=]{1}[x]{1}[2]{1}[+]{1}[0-9]{1, }[x]{1}[+]{1}[0-9]{1, }$/
  2.     || $pol =~ /^[y]{1}[=]{1}[0-9]{1, }[x]{1}[3]{1}[-]{1}[0-9]{1, }[x]{1}[2]{1}[0-9]{1, }[x]{1}$/ ) {
  3.     print "Polinomio valido";
  4. }
  5. else {
  6.     print "Polinomio no valido";
  7. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. if (   $pol =~ /^y=x2\+[0-9]{1, }x\+[0-9]{1, }$/
  2.     || $pol =~ /^y=[0-9]{1, }x3-[0-9]{1, }x2[0-9]{1, }x$/ ) {
  3.     print "Polinomio valido";
  4. }
  5. else {
  6.     print "Polinomio no valido";
  7. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. if (   $pol =~ /^y=x2\+\d+x\+\d+$/
  2.     || $pol =~ /^y=\d+x3-\d+x2\d+x$/ ) {
  3.     print "Polinomio valido";
  4. }
  5. else {
  6.     print "Polinomio no valido";
  7. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Los dos polinomios de muestra tienen componente x3, por lo que la primera parte del if() no coincidirá.

En cuanto a la segunda parte, falta un signo '+' entre el x2 y el x.

Este patrón reconoce los dos polinomios:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. @polys = qw( y=x3+x+3 y=6x3-6x2+5x );
  2. foreach $pol (@polys) {
  3.     if ( $pol =~ /^y=\d*x3([-+]\d+x2)?\+\d+x(\+\d+)?$/ ) {
  4.         print "Polinomio válido";
  5.     }
  6.     else {
  7.         print "Polinomio no válido";
  8.     }
  9. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor dacons » 2006-05-03 17:07 @755

Lo siento, era x2 y no x3 como puse arriba.

El último código es más eficiente pero el penúltimo es más comprensible para mis pequeños conocimientos.

Muchísimas gracias.
dacons
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2006-02-27 04:15 @219


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados