Annotation of loncom/homework/templates/custom_equation.problem, revision 1.1

1.1     ! www         1: <problem>
        !             2: <script type="loncapa/perl">
        !             3: $a=&random(3,8,1);
        !             4: $b=$a+&random(2,5,1);
        !             5: $sample="x=$b or y=$a*x would be correct";
        !             6: 
        !             7: sub compareequations {
        !             8:     my ($var,$value,$equation,$real,$lenient)=@_;
        !             9: # var is the variable given
        !            10: # value is the expected value of $var, $var=$value
        !            11: # equation is the equation to be tested
        !            12: # real: if set, operate only in the real realm
        !            13: # lenient: if set, give credit even if the correct answer is only one of the possible answers, e.g., x^2=9 is "correct" if x=3 is expected
        !            14:     $correctanswer=&cas('maxima','trigsimp(trigreduce('.$var.'='.$value.'))');
        !            15:     if ($correctanswer=~/^Error\:/) { return $correctanswer; }
        !            16:     $solution=&cas('maxima','trigsimp(trigreduce(solve('.$equation.','.$var.')))');
        !            17:     if ($solution=~/^Error\:/) { return $solution; }
        !            18:     $solution=~s/^\[//;
        !            19:     $solution=~s/\]$//;
        !            20:     $total=0;
        !            21:     $found=0;
        !            22:     foreach my $thissolution (split(/\s*\,\s*/,$solution)) {
        !            23:          if (($real) && ($thissolution=~/\%i/)) { next; }
        !            24:          $total++;
        !            25:          if ($thissolution eq $correctanswer) { $found=1; }
        !            26:     }
        !            27:     if ((!$lenient) && ($total>1)) { return 'false'; }
        !            28:     if ($found) { return 'true'; }
        !            29:     return 'false';
        !            30: }
        !            31: </script>
        !            32: 
        !            33: <startouttext />
        !            34: Given an equation for an asymptote of <m eval="on">\[y=$a\cdot x+\frac{1}{x-$b}\]</m>
        !            35: <endouttext />
        !            36: 
        !            37: <customresponse answerdisplay="$sample">
        !            38: 
        !            39: <answer type="loncapa/perl">$first=&compareequations('y',"$a*x",$submission,1);
        !            40: if ($first=~/^Error/) { return 'BAD_FORMULA'; }
        !            41: if ($first=~/true/) { return 'EXACT_ANS'; }
        !            42: 
        !            43: $second=&compareequations('x',$b,$submission,1);
        !            44: if ($second=~/^Error/) { return 'BAD_FORMULA'; }
        !            45: if ($second=~/true/) { return 'EXACT_ANS'; }
        !            46: 
        !            47: return 'INCORRECT';</answer>
        !            48: 
        !            49:     <textline readonly="no" />
        !            50: </customresponse>
        !            51: 
        !            52: </problem>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>