En fait c'est un problème juste théorique.
je dois simplement créer un fonction qui permet de convertir une
expression infix en prefix

dans un exemple je dois avoir ca

2 * 5 + 1 =======> (+ 1 (* 2 5))

d'apres ce que j'ai compris c'est juste deux formes notation

http://en.wikipedia.org/wiki/Infix_notation

On 1 oct, 07:42, Jean-Baptiste BARTH <[EMAIL PROTECTED]>
wrote:
> Je ne vois pas de différence fondamentale entre (+ (* 2 5) 1) et (+ 1 (*
> 2 5)), le "+" est commutatif aux dernières nouvelles (ce qui n'est
> certes pas le cas du "-" ou du "/").
>
> Intuitivement : tu as un bloc "2*5" à traiter d'abord, puis ce bloc est
> inclus dans un bloc "résultat + 1". Pourquoi dans un cas ça te
> retournerait "* 2 5" et dans l'autre "+ 1 résultat". Je veux dire,
> pourquoi les opérandes trouveraient leur ordre inversé dans un des
> traitements et pas dans l'autre ? Et quel intérêt cela aurait ? Peux-tu
> préciser un peu le problème ?
>
> Cdt,
> --
> Jean-Baptiste
>
> Bolo a écrit :
>
> > Bonjour à tous,
>
> > dsl de faire un double post à la fois sur le groupe rails et sur ruby,
> > mais il semble plus avoir grand monde chez ruby.fr
>
> > j'essaye de faire une méthode pour convertir une expression infix et
> > prefix
> > ca passe pas
> > Ou est mon problème ?
> > merci
> > def parse_simple(expr, opers=%w(+ - * /))
> >   return expr if opers.empty?
> >   return parse_simple(expr, opers[1..-1]) unless expr.include?
> > (opers.first)
> >   "(#{opers.first} " +
> >   expr.split(opers.first).map {|e|
> >     p e
> >      parse_simple(e, opers[1..-1]).strip
> >      }.join(" ") +
> >    ")"
> > end
>
> > def parse(expr, exprs = [])
> >   while expr.gsub!(/\(([^\(\)]+)\)/) {"expr:#{(exprs <<
> > parse_simple($1)).size - 1}"}; end
> >   expr = parse_simple(expr)
> >   while expr.gsub!(/expr:(\d+)/) {exprs[$1.to_i]}; end
> >   expr
> > end
>
> > Test
> > p "2 * 5 + 1
>
> > ca me retourne (+ (* 2 5) 1)
>
> > alors que ca devrait être (+ 1 (* 2 5))
> > 5))"
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse [EMAIL PROTECTED]
-~----------~----~----~----~------~----~------~--~---

Répondre à