Diff for /loncom/homework/default_homework.lcpm between versions 1.167 and 1.172.2.1

version 1.167, 2014/06/25 10:48:39 version 1.172.2.1, 2019/04/03 22:46:30
Line 632  sub hinton { Line 632  sub hinton {
 sub random {  sub random {
     my ($start,$end,$step)=@_;      my ($start,$end,$step)=@_;
     if ( ! $hidden::RANDOMINIT ) {      if ( ! $hidden::RANDOMINIT ) {
  if ($external::randomseed == 0) { $external::randomseed=1; }          if ($external::randomseed == 0) { $external::randomseed=1; }
  if ($external::randomseed =~/,/) {          if ($external::randomseed =~/,/) {
     my ($num1,$num2)=split(/,/,$external::randomseed);              my ($num1,$num2) = map { abs($_); } split(/,/,$external::randomseed);
     &random_set_seed(1,abs($num1));              if ((!$num1) || ($num1 > 2147483398)) {
  } elsif ($external::randomseed =~/:/) {                  &random_set_seed_from_phrase($external::randomseed);
     my ($num1,$num2)=split(/:/,$external::randomseed);              } else {
     &random_set_seed(abs($num1),abs($num2));                  &random_set_seed(1,$num1);
  } else {              }
     &random_set_seed(1,int(abs($external::randomseed)));          } elsif ($external::randomseed =~/:/) {
  }              my ($num1,$num2) = map { abs($_); } split(/:/,$external::randomseed);
               if ((!$num1) || (!$num2) || ($num1 > 2147483562) || ($num2 > 2147483398)) {
                   &random_set_seed_from_phrase($external::randomseed);
               } else {
                   &random_set_seed($num1,$num2);
               }
           } else {
               my $num1 = int(abs($external::randomseed));
               if ((!$num1) || ($num1 > 2147483398)) {
                   &random_set_seed_from_phrase($external::randomseed);
               } else {
                   &random_set_seed(1,$num1);
               }
           }
  &math_random_uniform();   &math_random_uniform();
  $hidden::RANDOMINIT=1;   $hidden::RANDOMINIT=1;
     }      }
Line 902  sub chemparse { Line 915  sub chemparse {
     my $formula = '';      my $formula = '';
     foreach my $token (@tokens) {      foreach my $token (@tokens) {
  if ($token eq '->' ) {   if ($token eq '->' ) {
     $formula .= '<m>\ensuremath{\rightarrow}</m> ';              if ($external::target eq 'web') {
                   $formula .= '&rarr; ';
               } else {
                   $formula .= '<m>\ensuremath{\rightarrow}</m> ';
       }
     next;      next;
  }   }
  if ($token eq '<-' ) {   if ($token eq '<-' ) {
     $formula .= '<m>\ensuremath{\leftarrow}</m> ';              if ($external::target eq 'web') {
                   $formula .= '&larr; ';
               } else {
                   $formula .= '<m>\ensuremath{\leftarrow}</m> ';
       }
     next;      next;
  }     }  
  if ($token eq '<=>') {   if ($token eq '<=>') {
Line 1228  sub sec { Line 1249  sub sec {
 }  }
   
 sub submission {  sub submission {
    my ($partid,$responseid,$subnumber,$encode)=@_;     my ($partid,$responseid,$subnumber,$encode,$cleanupnum,$mapalias)=@_;
    my $sub='';     my $sub='';
    if ($subnumber) { $sub=$subnumber.':'; }     if ($subnumber) { $sub=$subnumber.':'; }
    my $output =     my $output =
        &EXT('user.resource.'.$sub.'resource.'.$partid.'.'.$responseid.'.submission');         &EXT('user.resource.'.$sub.'resource.'.$partid.'.'.$responseid.'.submission',$mapalias);
    if ($encode) {     if (ref($output) eq 'ARRAY') {
        $output =~ s/&/&amp;/g;         my @items = @{$output};
        $output =~ s/</&lt;/g;         if ($encode) {
        $output =~ s/>/&gt;/g;             @items = map { &encode_response($_); } @items;
        $output =~ s/"/&quot;/g;         }
          if (ref($cleanupnum) eq 'HASH') {
              @items = map { &cleanup_numerical_response($cleanupnum,$_); } @items;
          }
          return \@items;
      } else {
          if ($encode) {
              $output = &encode_response($output);
          }
          if (ref($cleanupnum) eq 'HASH') {
              $output = &cleanup_numerical_response($cleanupnum,$output);
          }
          return $output;
    }     }
    return $output;  }
   
   sub encode_response {
       my ($value) = @_;
       $value =~ s/&/&amp;/g;
       $value =~ s/</&lt;/g;
       $value =~ s/>/&gt;/g;
       $value =~ s/"/&quot;/g;
       return $value;
   }
   
   sub cleanup_numerical_response {
       my ($cleanupnum,$value) = @_;
       if (ref($cleanupnum) eq 'HASH') {
           if ($cleanupnum->{exponent}) {
               if ($value =~ m{^(.*)[\*xX]\s*10\s*\^\s*(\+|\-)?\s*(\d+)(.*)$}) {
                   my $pre_exp = $1;
                   my $sign = $2;
                   my $exponent = $3;
                   my $post_exp = $4;
                   if ($pre_exp !~ /\./) {
                       $pre_exp .= '.';
                   }
                   if ($sign eq '') {
                       $sign = '+';
                   }
                   $value = $pre_exp.'E'.$sign.$exponent.$post_exp;
               }
           }
           if ($cleanupnum->{comma}) {
               $value =~ s{(\d+),(\d+)}{$1$2};
           }
           if ($cleanupnum->{letterforzero}) {
               $value =~ s/^\s*o(\.\d+)/0$1/i;
           }
           if ($cleanupnum->{spaces}) {
               $value =~ s{^\s+|\s+$}{}g;
               if ($value =~ m{^(.*)\.\s+(\d+)(.*)$}) {
                   my $pre_pt = $1;
                   my $decimal = $2;
                   my $post_dec = $3;
                   $value = $pre_pt.'.'.$decimal.$post_dec;
               }
           }
           if ($cleanupnum->{format} =~ /^\d+s$/i) {
               $value = &format_significant_figures($value,$cleanupnum->{format});
           }
       }
       return $value;
 }  }
   
 sub currentpart {  sub currentpart {
Line 1398  sub proper_path { Line 1479  sub proper_path {
     }      }
 }  }
   
   sub input_id {
       my ($part_id, $response_id, $textline_id) = @_;
       return 'HWVAL_'.$part_id.'_'.$response_id.'_'.$textline_id;
   }
   

Removed from v.1.167  
changed lines
  Added in v.1.172.2.1


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