--- loncom/homework/default_homework.lcpm 2006/07/17 21:11:21 1.110 +++ loncom/homework/default_homework.lcpm 2006/07/18 14:06:17 1.111 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # used by lonxml::xmlparse() as input variable $safeinit to Apache::run::run() # -# $Id: default_homework.lcpm,v 1.110 2006/07/17 21:11:21 www Exp $ +# $Id: default_homework.lcpm,v 1.111 2006/07/18 14:06:17 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -200,12 +200,21 @@ sub capa_formula_fix { sub implicit_multiplication { my ($expression)=@_; +# Escape scientific notation, so 3e8 does not become 3*e*8 +# 3e8 -> 3&8; 3e-8 -> 3&-8; 3E+8 -> e&+8 $expression=~s/(\d+)e([\+\-]*\d+)/$1\&\($2\)/gsi; +# 3x10^8 -> 3&8; 3*10^-8 -> 3&-8 $expression=~s/(\d+)(?:x|\*)10(?:\^|\*\*)([\+\-]*\d+)/$1\&\($2\)/gsi; +# Fill in multiplication signs +# a b -> a*b $expression=~s/\s+/\*/gs; +# 3a -> 3*a; 3( -> 3*(; 3A -> 3*a $expression=~s/(\d)([a-zA-Z\(])/$1\*$2/gs; +# a3 -> a*3; )3 -> )*3 $expression=~s/([a-zA-Z])(\d)/$1\*$2/gs; +# )a -> )*a $expression=~s/\)(\w)/\)\*$1/gs; +# 3&8 -> 3e8; 3&-4 -> 3e-4 $expression=~s/(\d+)\&\(([\+\-]*\d+)\)/$1e$2/gs; return $expression; }