Diff for /loncom/homework/response.pm between versions 1.122 and 1.126

version 1.122, 2005/06/29 19:20:10 version 1.126, 2005/11/01 21:33:49
Line 71  sub start_hintresponse { Line 71  sub start_hintresponse {
     my ($parstack,$safeeval)=@_;      my ($parstack,$safeeval)=@_;
     my $id= &Apache::lonxml::get_param('id',$parstack,$safeeval);      my $id= &Apache::lonxml::get_param('id',$parstack,$safeeval);
     if ($id eq '') { $id = $Apache::lonxml::curdepth; }      if ($id eq '') { $id = $Apache::lonxml::curdepth; }
     push (@Apache::inputtags::response,$id);      push (@Apache::inputtags::hint,$id);
     push (@Apache::inputtags::responselist,$id);      push (@Apache::inputtags::hintlist,$id);
     push (@Apache::inputtags::paramstack,[%Apache::inputtags::params]);      push (@Apache::inputtags::paramstack,[%Apache::inputtags::params]);
     return $id;      return $id;
 }  }
   
 sub end_hintresponse {  sub end_hintresponse {
     pop @Apache::inputtags::response;      pop @Apache::inputtags::hint;
     if (defined($Apache::inputtags::paramstack[-1])) {      if (defined($Apache::inputtags::paramstack[-1])) {
  %Apache::inputtags::params=   %Apache::inputtags::params=
     @{ pop(@Apache::inputtags::paramstack) };      @{ pop(@Apache::inputtags::paramstack) };
Line 119  sub setrandomnumber { Line 119  sub setrandomnumber {
     &Apache::lonxml::debug("randseed $rndseed");      &Apache::lonxml::debug("randseed $rndseed");
     #  $rndseed=unpack("%32i",$rndseed);      #  $rndseed=unpack("%32i",$rndseed);
     my $rand_alg=&Apache::lonnet::get_rand_alg();      my $rand_alg=&Apache::lonnet::get_rand_alg();
     my $rndmod;      my ($rndmod,$rndmod2);
   
     my ($id1,$id2,$shift_amt);      my ($id1,$id2,$shift_amt);
     if ($Apache::lonhomework::parsing_a_problem) {      if ($Apache::lonhomework::parsing_a_problem) {
Line 133  sub setrandomnumber { Line 133  sub setrandomnumber {
  if (defined($Apache::bridgetask::instance[-1])) {   if (defined($Apache::bridgetask::instance[-1])) {
     $id2=$Apache::bridgetask::instance[-1];      $id2=$Apache::bridgetask::instance[-1];
  }   }
    Apache->request->print("<p> $id1 $id2</p>");
  $shift_amt=scalar(@Apache::bridgetask::instance);   $shift_amt=scalar(@Apache::bridgetask::instance);
     }       } 
     &Apache::lonxml::debug("id1: $id1, id2: $id2, shift_amt: $shift_amt");      &Apache::lonxml::debug("id1: $id1, id2: $id2, shift_amt: $shift_amt");
Line 143  sub setrandomnumber { Line 144  sub setrandomnumber {
     } elsif ($rand_alg eq '64bit3') {      } elsif ($rand_alg eq '64bit3') {
  $rndmod=(&Apache::lonnet::numval2($id1) << 10);   $rndmod=(&Apache::lonnet::numval2($id1) << 10);
  if (defined($id2)) { $rndmod+=&Apache::lonnet::numval2($id2); }   if (defined($id2)) { $rndmod+=&Apache::lonnet::numval2($id2); }
     } else {      } elsif ($rand_alg eq '64bit4') {
  my $shift=(4*$shift_amt)%30;   my $shift=(4*$shift_amt)%30;
  $rndmod=(&Apache::lonnet::numval3($id1) << (($shift+15)%30));   $rndmod=(&Apache::lonnet::numval3($id1) << (($shift+15)%30));
  if (defined($id2)) {   if (defined($id2)) {
     $rndmod+=(&Apache::lonnet::numval3($id2) << $shift );      $rndmod+=(&Apache::lonnet::numval3($id2) << $shift );
  }   }
       } else {
    ($rndmod,$rndmod2)=&Apache::lonnet::digest("$id1,$id2");
   
     }      }
     if ($rndseed =~/([,:])/) {      if ($rndseed =~/([,:])/) {
  my $char=$1;   my $char=$1;
  use integer;   use integer;
  my ($num1,$num2)=split(/\Q$char\E/,$rndseed);   my ($num1,$num2)=split(/\Q$char\E/,$rndseed);
  $num1+=$rndmod;   $num1+=$rndmod;
  $num2+=$rndmod;   $num2+= ((defined($rndmod2)) ? $rndmod2 : $rndmod);
  if($Apache::lonnet::_64bit) { $num1=(($num1<<32)>>32); $num2=(($num2<<32)>>32); }   if($Apache::lonnet::_64bit) { $num1=(($num1<<32)>>32); $num2=(($num2<<32)>>32); }
  $rndseed=$num1.$char.$num2;   $rndseed=$num1.$char.$num2;
     } else {      } else {
Line 505  sub answer_part { Line 509  sub answer_part {
     my ($type,$answer) = @_;      my ($type,$answer) = @_;
     my $result;      my $result;
     if ($env{'form.answer_output_mode'} eq 'tex') {      if ($env{'form.answer_output_mode'} eq 'tex') {
  $result = ' \verb|'.$answer.'|\\\\ \hline ';   my $to_use='|';
    foreach my $value (32..126) {
       my $char=pack('c',$value);
       if ($answer !~ /\Q$char\E/) {
    $to_use=$char;
    last;
       }
    }
    $result = '\verb'.$to_use.$answer.$to_use.'\\\\ \hline ';
     } else {      } else {
  $result = '<td>'.$answer.'</td>';   $result = '<td>'.$answer.'</td>';
     }      }
Line 574  sub repetition { Line 586  sub repetition {
     my $id = $Apache::inputtags::part;      my $id = $Apache::inputtags::part;
     my $weight = &Apache::lonnet::EXT("resource.$id.weight");      my $weight = &Apache::lonnet::EXT("resource.$id.weight");
     if (!defined($weight) || ($weight eq '')) { $weight=1; }      if (!defined($weight) || ($weight eq '')) { $weight=1; }
     my $repetition = int $weight/9;      my $repetition = int($weight/10);
     if ($weight % 9 != 0) {$repetition++;}       if ($weight % 10 != 0) { $repetition++; } 
     return $repetition;      return $repetition;
 }  }
   
Line 584  sub scored_response { Line 596  sub scored_response {
     my $repetition=&repetition();      my $repetition=&repetition();
     my $score=0;      my $score=0;
     for (my $i=0;$i<$repetition;$i++) {      for (my $i=0;$i<$repetition;$i++) {
    # A is 1, B is 2, etc. (get response return 0-9 and then we add 1)
  my $increase=&Apache::response::getresponse($i+1);   my $increase=&Apache::response::getresponse($i+1);
  if ($increase ne '') { $score+=$increase+1; }   if ($increase ne '') { $score+=$increase+1; }
     }      }

Removed from v.1.122  
changed lines
  Added in v.1.126


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