Advertisement
Guest User

Untitled

a guest
Nov 14th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (*flatten (prejme izraz, ki ga sestavljajo konstante, spremenljivke in poljubno število operatorjev / (podanih v Pair obliki).
  2. Vrne ekvivalenten izraz, ki vsebuje največ eno deljenje (Operator "/" v Pair obliki).
  3. Vrnjeni izraz lahko vsebuje še konstante, spremenljivke ter operatorja "+" in "*".)*)
  4.  
  5.  
  6. fun flatten(a: expression) =
  7.     case a of
  8.         Operator("/", Pair([Operator("/", Pair([a, Constant b ]))   , Operator("/", Pair([c, d]))  ])) => Operator("/", Pair([ Operator("*", Pair([a, d]))    ,  Operator("*", Pair([Constant b, c]))  ]))
  9.        
  10.         | Operator("/", Pair([Operator("/", Pair([a, Variable b ]))   , Operator("/", Pair([c, d]))  ])) => Operator("/", Pair([ Operator("*", Pair([a, d]))    ,  Operator("*", Pair([Variable b, c]))  ]))
  11.  
  12.         |Operator("/", Pair([Operator("/",Pair([Operator("*", a)  , Operator("*", b) ]) )    , Operator("/", Pair([ Operator("*", c)  , Operator("*", d)  ])    )  ])) => Operator("/", Pair([ Operator("*", Pair([Operator("*", a)     , Operator("*", d)  ])       )   , Operator("*",   Pair([Operator("*", b)   , Operator("*", c)])     )    ]))
  13.  
  14.         |Operator("/", Pair([a,b])) => flatten(Operator("/", Pair([flatten a, flatten b])))
  15.        
  16. (*count_constants (vrne število vseh konstant, ki se pojavljajo v vhodnem izrazu)*)
  17. fun count_constants(a: expression) =
  18.     case a of
  19.         Operator("/", Pair([a,b])) => count_constants(a) + count_constants(b)
  20.         | Variable a => 0
  21.         | Constant a => 1  
  22.        
  23. (*sum_constants (vrne vsoto vseh konstant, ki se pojavljajo v vhodnem izrazu)*)
  24. fun sum_constants(a: expression) =
  25.     case a of
  26.         Operator("/", Pair([a,b])) => sum_constants(a) + sum_constants(b)
  27.         | Variable a => 0
  28.         | Constant a => a
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement