Diff for /loncom/homework/default_homework.lcpm between versions 1.45 and 1.52

version 1.45, 2002/01/30 17:32:05 version 1.52, 2002/09/26 20:46:48
Line 57  sub caparesponse_check { Line 57  sub caparesponse_check {
   #remove leading and trailing whitespace    #remove leading and trailing whitespace
   if ($response=~ /^\s|\s$/) {    if ($response=~ /^\s|\s$/) {
     $response=~ s:^\s+|\s+$::g;      $response=~ s:^\s+|\s+$::g;
     $message .="Removed ws now :$response:<br />";      $message .="Removed ws now :$response:\n";
   } else {    } else {
     $message .="no ws in :$response:<br />";      $message .="no ws in :$response:\n";
   }    }
   
   if ($type eq '' ) {    if ($type eq '' ) {
     $message .= "Didn't find a type :$type:$expr: defaulting<br />";      $message .= "Didn't find a type :$type:$expr: defaulting\n";
     if ( $answer eq ($answer *1.0)) { $type = 2;      if ( $answer eq ($answer *1.0)) { $type = 2;
     } else { $type = 3; }      } else { $type = 3; }
   } else {    } else {
Line 82  sub caparesponse_check { Line 82  sub caparesponse_check {
   #formula type setup the sample points    #formula type setup the sample points
   if ($type eq '8') {    if ($type eq '8') {
     ($id_list,$points)=split(/@/,$samples);      ($id_list,$points)=split(/@/,$samples);
     $message.="Found :$points: points<br />";      $message.="Found :$points: points\n";
   }    }
   if ($tol eq '') {    if ($tol eq '') {
     $tol=0.0;      $tol=0.0;
Line 127  sub caparesponse_check { Line 127  sub caparesponse_check {
   elsif ($result =='12') { $result='WANTED_NUMERIC'; }    elsif ($result =='12') { $result='WANTED_NUMERIC'; }
   else  {$result = "ERROR: Unknown Result:$result:$@:";}    else  {$result = "ERROR: Unknown Result:$result:$@:";}
   
   return "$result:<br />Error $error:<br />Answer $answer:<br />Response $response:<br /> type-$type|$tol|$tol_type|$sig:$sig_lbound:$sig_ubound|$unit|<br />$message$expr";    return "$result:\nError $error:\nAnswer $answer:\nResponse $response:\n type-$type|$tol|$tol_type|$sig:$sig_lbound:$sig_ubound|$unit|\n$message$expr";
 }  }
   
 sub get_array_args {  sub get_array_args {
Line 140  sub get_array_args { Line 140  sub get_array_args {
   if ($CAPARESPONSE_CHECK_LIST_answer =~ /^\s*[\$\@]/) {    if ($CAPARESPONSE_CHECK_LIST_answer =~ /^\s*[\$\@]/) {
     (@GET_ARRAY_ARGS_list) = eval $CAPARESPONSE_CHECK_LIST_answer;      (@GET_ARRAY_ARGS_list) = eval $CAPARESPONSE_CHECK_LIST_answer;
   }    }
   $GET_ARRAY_ARGS_result.="error:$@:<br />";    $GET_ARRAY_ARGS_result.="error:$@:\n";
   # if the eval fails just use what is in the answer exactly    # if the eval fails just use what is in the answer exactly
   if (!defined(@GET_ARRAY_ARGS_list) || !defined($GET_ARRAY_ARGS_list[0])) {    if (!defined(@GET_ARRAY_ARGS_list) || !defined($GET_ARRAY_ARGS_list[0])) {
     $GET_ARRAY_ARGS_result.="list zero is undefined<br />";      $GET_ARRAY_ARGS_result.="list zero is undefined\n";
     $GET_ARRAY_ARGS_list[0]=$CAPARESPONSE_CHECK_LIST_answer;      $GET_ARRAY_ARGS_list[0]=$CAPARESPONSE_CHECK_LIST_answer;
   }    }
   return $GET_ARRAY_ARGS_result,@GET_ARRAY_ARGS_list;    return $GET_ARRAY_ARGS_result,@GET_ARRAY_ARGS_list;
Line 156  sub caparesponse_check_list { Line 156  sub caparesponse_check_list {
   my $aresult='';    my $aresult='';
   my $current_answer;    my $current_answer;
   my $answers=join(':',@list);    my $answers=join(':',@list);
   $result.="Got response :$answers:<br />";    $result.="Got response :$answers:\n";
   my @responselist;    my @responselist;
   my $type =eval $expr.';return $answer;';    my $type =eval $expr.';return $answer;';
   if ($type ne '' && $#list > 0) {    if ($type ne '' && $#list > 0) {
Line 165  sub caparesponse_check_list { Line 165  sub caparesponse_check_list {
     (@responselist)=($response);      (@responselist)=($response);
   }    }
   my $unit='';    my $unit='';
   $result.="Initial final response :$responselist['-1']:<br />";    $result.="Initial final response :$responselist['-1']:\n";
   if ($type eq '') {    if ($type eq '') {
     #for numerical problems split off the unit      #for numerical problems split off the unit
     if ( $responselist['-1']=~ /(.*[^\s])\s+([^\s]+)/ ) {      if ( $responselist['-1']=~ /(.*[^\s])\s+([^\s]+)/ ) {
Line 173  sub caparesponse_check_list { Line 173  sub caparesponse_check_list {
       $unit=$2;        $unit=$2;
     }      }
   }    }
   $result.="Final final response :$responselist['-1']:<br />";    $result.="Final final response :$responselist['-1']:\n";
   $result.=":$#list: answers<br />";    $result.=":$#list: answers\n";
   $unit=~s/\s//;    $unit=~s/\s//;
   my $i=0;    my $i=0;
   my $awards='';    my $awards='';
   for ($i=0; $i<@list;$i++) {    for ($i=0; $i<@list;$i++) {
     $result.="trying answer :$list[$i]:<br />";      $result.="trying answer :$list[$i]:\n";
     if ($unit eq '') {      if ($unit eq '') {
       $aresult=&caparesponse_check($responselist[$i],        $aresult=&caparesponse_check($responselist[$i],
      $expr.';my $answer=\''.$list[$i].'\';');       $expr.';my $answer=\''.$list[$i].'\';');
Line 192  sub caparesponse_check_list { Line 192  sub caparesponse_check_list {
     $result.=$aresult;      $result.=$aresult;
   }    }
   chop $awards;    chop $awards;
   return "$awards:<br />$result";    return "$awards:\n$result";
 }  }
   
 sub tex {  sub tex {
Line 240  sub hinton { Line 240  sub hinton {
 sub random {  sub random {
   my ($start,$end,$step)=@_;    my ($start,$end,$step)=@_;
   if ( ! $hidden::RANDOMINIT ) {    if ( ! $hidden::RANDOMINIT ) {
     srand($external::randomseed);      &random_set_seed_from_phrase($external::randomseed);
     $hidden::RANDOMINIT=1;      $hidden::RANDOMINIT=1;
   }    }
   if (!defined($step)) { $step=1; }    if (!defined($step)) { $step=1; }
   my $num=1+int(($end-$start)/$step);    my $num=1+int(($end-$start)/$step);
   my $result=$start + int(rand() * $num)*$step;    my $result=$start + int(&math_random_uniform() * $num)*$step;
   return $result;    return $result;
 }  }
   
 sub random_normal {  sub random_normal {
   my ($item_cnt,$seed,$av,$std_dev) = @_;    my ($item_cnt,$seed,$av,$std_dev) = @_;
     my @oldseed=&random_get_seed();
   my @retArray;    my @retArray;
   &random_set_seed_from_phrase($seed);    &random_set_seed_from_phrase($seed);
   @retArray=&math_random_normal($item_cnt,$av,$std_dev);    @retArray=&math_random_normal($item_cnt,$av,$std_dev);
     &random_set_seed(@oldseed);
   return @retArray;    return @retArray;
 }  }
   
 sub random_beta {  sub random_beta {
   my ($item_cnt,$seed,$aa,$bb) = @_;    my ($item_cnt,$seed,$aa,$bb) = @_;
     my @oldseed=&random_get_seed();
   my @retArray;    my @retArray;
   &random_set_seed_from_phrase($seed);    &random_set_seed_from_phrase($seed);
   @retArray=&math_random_beta($item_cnt,$aa,$bb);    @retArray=&math_random_beta($item_cnt,$aa,$bb);
     &random_set_seed(@oldseed);
   return @retArray;    return @retArray;
 }  }
   
 sub random_gamma {  sub random_gamma {
   my ($item_cnt,$seed,$a,$r) = @_;    my ($item_cnt,$seed,$a,$r) = @_;
     my @oldseed=&random_get_seed();
   my @retArray;    my @retArray;
   &random_set_seed_from_phrase($seed);    &random_set_seed_from_phrase($seed);
   @retArray=&math_random_gamma($item_cnt,$a,$r);    @retArray=&math_random_gamma($item_cnt,$a,$r);
     &random_set_seed(@oldseed);
   return @retArray;    return @retArray;
 }  }
   
 sub random_exponential {  sub random_exponential {
   my ($item_cnt,$seed,$av) = @_;    my ($item_cnt,$seed,$av) = @_;
     my @oldseed=&random_get_seed();
   my @retArray;    my @retArray;
   &random_set_seed_from_phrase($seed);    &random_set_seed_from_phrase($seed);
   @retArray=&math_random_exponential($item_cnt,$av);    @retArray=&math_random_exponential($item_cnt,$av);
     &random_set_seed(@oldseed);
   return @retArray;    return @retArray;
 }  }
   
 sub random_poisson {  sub random_poisson {
   my ($item_cnt,$seed,$mu) = @_;    my ($item_cnt,$seed,$mu) = @_;
     my @oldseed=&random_get_seed();
   my @retArray;    my @retArray;
   &random_set_seed_from_phrase($seed);    &random_set_seed_from_phrase($seed);
   @retArray=&math_random_poisson($item_cnt,$mu);    @retArray=&math_random_poisson($item_cnt,$mu);
     &random_set_seed(@oldseed);
   return @retArray;    return @retArray;
 }  }
   
 sub random_chi {  sub random_chi {
   my ($item_cnt,$seed,$df) = @_;    my ($item_cnt,$seed,$df) = @_;
     my @oldseed=&random_get_seed();
   my @retArray;    my @retArray;
   &random_set_seed_from_phrase($seed);    &random_set_seed_from_phrase($seed);
   @retArray=&math_random_chi_square($item_cnt,$df);    @retArray=&math_random_chi_square($item_cnt,$df);
     &random_set_seed(@oldseed);
   return @retArray;    return @retArray;
 }  }
   
 sub random_noncentral_chi {  sub random_noncentral_chi {
   my ($item_cnt,$seed,$df,$nonc) = @_;    my ($item_cnt,$seed,$df,$nonc) = @_;
     my @oldseed=&random_get_seed();
   my @retArray;    my @retArray;
   &random_set_seed_from_phrase($seed);    &random_set_seed_from_phrase($seed);
   @retArray=&math_random_noncentral_chi_square($item_cnt,$df,$nonc);    @retArray=&math_random_noncentral_chi_square($item_cnt,$df,$nonc);
     &random_set_seed(@oldseed);
   return @retArray;    return @retArray;
 }  }
   
 sub random_f {  sub random_f {
   my ($item_cnt,$seed,$dfn,$dfd) = @_;    my ($item_cnt,$seed,$dfn,$dfd) = @_;
     my @oldseed=&random_get_seed();
   my @retArray;    my @retArray;
   &random_set_seed_from_phrase($seed);    &random_set_seed_from_phrase($seed);
   @retArray=&math_random_f($item_cnt,$dfn,$dfd);    @retArray=&math_random_f($item_cnt,$dfn,$dfd);
     &random_set_seed(@oldseed);
   return @retArray;    return @retArray;
 }  }
   
 sub random_noncentral_f {  sub random_noncentral_f {
   my ($item_cnt,$seed,$dfn,$dfd,$nonc) = @_;    my ($item_cnt,$seed,$dfn,$dfd,$nonc) = @_;
     my @oldseed=&random_get_seed();
   my @retArray;    my @retArray;
   &random_set_seed_from_phrase($seed);    &random_set_seed_from_phrase($seed);
   @retArray=&math_random_noncentral_f($item_cnt,$dfn,$dfd,$nonc);    @retArray=&math_random_noncentral_f($item_cnt,$dfn,$dfd,$nonc);
     &random_set_seed(@oldseed);
   return @retArray;    return @retArray;
 }  }
   
 sub random_multivariate_normal {  sub random_multivariate_normal {
   my ($item_cnt,$seed,$mean,$covar) = @_;    my ($item_cnt,$seed,$mean,$covar) = @_;
     my @oldseed=&random_get_seed();
   &random_set_seed_from_phrase($seed);    &random_set_seed_from_phrase($seed);
   @retArray=&math_random_multivariate_normal($item_cnt,@$mean,@$covar);    @retArray=&math_random_multivariate_normal($item_cnt,@$mean,@$covar);
     &random_set_seed(@oldseed);
   return @retArray;    return @retArray;
 }  }
   
 sub random_multinomial {  sub random_multinomial {
   my ($item_cnt,$seed,@p) = @_;    my ($item_cnt,$seed,@p) = @_;
     my @oldseed=&random_get_seed();
   my @retArray;    my @retArray;
   &random_set_seed_from_phrase($seed);    &random_set_seed_from_phrase($seed);
   @retArray=&math_random_multinomial($item_cnt,@p);    @retArray=&math_random_multinomial($item_cnt,@p);
     &random_set_seed(@oldseed);
   return @retArray;    return @retArray;
 }  }
   
 sub random_permutation {  sub random_permutation {
   my ($seed,@inArray) = @_;    my ($seed,@inArray) = @_;
     my @oldseed=&random_get_seed();
   my @retArray;    my @retArray;
   &random_set_seed_from_phrase($seed);    &random_set_seed_from_phrase($seed);
   @retArray=&math_random_permutation(@inArray);    @retArray=&math_random_permutation(@inArray);
     &random_set_seed(@oldseed);
   return @retArray;    return @retArray;
 }  }
   
 sub random_uniform {  sub random_uniform {
   my ($item_cnt,$seed,$low,$high) = @_;    my ($item_cnt,$seed,$low,$high) = @_;
     my @oldseed=&random_get_seed();
   my @retArray;    my @retArray;
   &random_set_seed_from_phrase($seed);    &random_set_seed_from_phrase($seed);
   @retArray=&math_random_uniform($item_cnt,$low,$high);    @retArray=&math_random_uniform($item_cnt,$low,$high);
     &random_set_seed(@oldseed);
   return @retArray;    return @retArray;
 }  }
   
 sub random_uniform_integer {  sub random_uniform_integer {
   my ($item_cnt,$seed,$low,$high) = @_;    my ($item_cnt,$seed,$low,$high) = @_;
     my @oldseed=&random_get_seed();
   my @retArray;    my @retArray;
   &random_set_seed_from_phrase($seed);    &random_set_seed_from_phrase($seed);
   @retArray=&math_random_uniform_integer($item_cnt,$low,$high);    @retArray=&math_random_uniform_integer($item_cnt,$low,$high);
     &random_set_seed(@oldseed);
   return @retArray;    return @retArray;
 }  }
   
 sub random_binomial {  sub random_binomial {
   my ($item_cnt,$seed,$nt,$p) = @_;    my ($item_cnt,$seed,$nt,$p) = @_;
     my @oldseed=&random_get_seed();
   my @retArray;    my @retArray;
   &random_set_seed_from_phrase($seed);    &random_set_seed_from_phrase($seed);
   @retArray=&math_random_binomial($item_cnt,$nt,$p);    @retArray=&math_random_binomial($item_cnt,$nt,$p);
     &random_set_seed(@oldseed);
   return @retArray;    return @retArray;
 }  }
   
 sub random_negative_binomial {  sub random_negative_binomial {
   my ($item_cnt,$seed,$ne,$p) = @_;    my ($item_cnt,$seed,$ne,$p) = @_;
     my @oldseed=&random_get_seed();
   my @retArray;    my @retArray;
   &random_set_seed_from_phrase($seed);    &random_set_seed_from_phrase($seed);
   @retArray=&math_random_negative_binomial($item_cnt,$ne,$p);    @retArray=&math_random_negative_binomial($item_cnt,$ne,$p);
     &random_set_seed(@oldseed);
   return @retArray;    return @retArray;
 }  }
   
Line 442  sub floor  {return (($_[0]-int($_[0]))== Line 474  sub floor  {return (($_[0]-int($_[0]))==
   
 sub format {  sub format {
   my ($value,$fmt)=@_;    my ($value,$fmt)=@_;
   return sprintf('%.'.$fmt,$value);    my $dollarmode;
     if ($fmt =~ /^\$(.*)/) { $fmt=$1; $dollarmode=1; } 
     my $result=sprintf('%.'.$fmt,$value);
     $result=~s/(E[+-]*)0/$1/;
     if ($dollarmode) {$result=&dollarmode($result);}
     return $result;
   }
   
   sub prettyprint {
     my ($value,$fmt)=@_;
     my $result;
     my $dollarmode;
     if ($fmt =~ /^\$(.*)/) { $fmt=$1; $dollarmode=1; } 
     if ($fmt) { $value=sprintf('%.'.$fmt,$value); }
     if ($value =~ /([0-9\.\-\+]+)E([0-9\-\+]+)/ ) {
       my $frac=$1;
       if ($dollarmode) { $frac=&dollarformat($frac); }
       my $exponent=$2;
       $exponent=~s/^\+0*//;
       $exponent=~s/^-0*/-/;
       if ($exponent) {
         if ($external::target eq 'web') {
    $result=$frac.'&#215;10<sup>'.$exponent.'</sup>';
         } elsif ($external::target eq 'tex') {
    $result='\ensuremath{'.$frac.'\times 10^{'.$exponent.'}}';
         } else {
    $result=$value;
         }
       } else {
         $result=$frac;
       }
     } else {
       $result=$value;
       if ($dollarmode) { $result=&dollarformat($result); }
     }
     return $result;
   }
   
   sub dollarformat {
     my ($number) = @_;
     if ($number =~ /\./) {
       while ($number =~ /([^\.,]+)([^\.,][^\.,][^\.,])([,0-9]*\.[0-9]*$)/) {
         $number = $1.','.$2.$3;
       }
     } else {
       while ($number =~ /([^,]+)([^,][^,][^,])([,0-9]*)$/) {
         $number = $1.','.$2.$3;
       }
     }
     if ($external::target eq 'tex') {
       $number='\$'.$number; #' stupid emacs
     } else {
       $number='$'.$number; #' stupid emacs
     }
     return $number; 
 }  }
   
 sub map {  sub map {
     my ($phrase,$dest,$source)=@_;      my ($phrase,$dest,$source)=@_;
       my @oldseed=&random_get_seed();
     my @seed = &random_seed_from_phrase($phrase);      my @seed = &random_seed_from_phrase($phrase);
     &random_set_seed(@seed);      &random_set_seed(@seed);
     my $destct = scalar(@$dest);      my $destct = scalar(@$dest);
Line 458  sub map { Line 545  sub map {
     $output[$ctr] = $$dest[$idx[$ctr]];      $output[$ctr] = $$dest[$idx[$ctr]];
     $ctr++;      $ctr++;
  }   }
           &random_set_seed(@oldseed);
  return @output;   return @output;
     } else {      } else {
  my $num = scalar(@$source);   my $num = scalar(@$source);
Line 477  sub map { Line 565  sub map {
     }      }
  }   }
     }      }
       &random_set_seed(@seed);
       return '';
 }  }
   
 sub rmap {  sub rmap {
     my ($phrase,$dest,$source)=@_;      my ($phrase,$dest,$source)=@_;
       my @oldseed=&random_get_seed();
     my @seed = &random_seed_from_phrase($phrase);      my @seed = &random_seed_from_phrase($phrase);
     &random_set_seed(@seed);      &random_set_seed(@seed);
     my $destct = scalar(@$dest);      my $destct = scalar(@$dest);
Line 498  sub rmap { Line 589  sub rmap {
     $output[$ctr] = $$dest[$r_idx[$ctr]];      $output[$ctr] = $$dest[$r_idx[$ctr]];
     $ctr++;      $ctr++;
  }   }
           &random_set_seed(@oldseed);
  return @output;   return @output;
     } else {      } else {
  my $num = scalar(@$source);   my $num = scalar(@$source);
Line 523  sub rmap { Line 615  sub rmap {
     }      }
  }   }
     }      }
       &random_set_seed(@oldseed);
       return '';
 }  }
   
 sub capa_id { return }  sub capa_id { return }
Line 634  sub choose { Line 728  sub choose {
   return $_[$num];    return $_[$num];
 }  }
   
   # expiremental idea
   sub proper_path {
     my ($path)=@_;
     if ( $external::target eq "tex" ) {
       return '/home/httpd/html'.$path;
     } else {
       return $path;
     }
   }
   

Removed from v.1.45  
changed lines
  Added in v.1.52


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.