--- loncom/homework/default_homework.lcpm 2001/05/30 21:49:13 1.23 +++ loncom/homework/default_homework.lcpm 2001/05/31 20:47:50 1.24 @@ -7,6 +7,7 @@ # Guy Albertelli # # 05/25/2001 H. K. Ng +# 05/31/2001 H. K. Ng # $RANDOMINIT=0; $pi=atan2(1,1)*4; @@ -123,6 +124,14 @@ sub tex { } } +sub var_in_tex { + if ( $external::target eq "tex" ) { + return @_[0]; + } else { + return ""; + } +} + sub web { if ( $external::target eq "tex" ) { return @_[1]; @@ -135,6 +144,12 @@ sub web { } } +sub html { + if ( $external::target eq "web" ) { + return @_[0]; + } +} + sub problem { return '1'; } @@ -193,12 +208,6 @@ sub max { return pop @sorted; } -sub html { - if ( $external::target eq "web" ) { - return @_[0]; - } -} - sub roundto { my ($input,$n) = @_; return sprintf('%.'.$n.'f',$input); @@ -273,18 +282,78 @@ sub sec { sub open_date { my @dc = split(/\s+/,localtime(&EXT('resource.0.opendate'))); - return $dc[0].', '.$dc[1].' '.$dc[2].', '.$dc[4].' at '.$dc[3]; + return '' if ($dc[0] eq "Wed" and $dc[2] == 31 and $dc[4] == 1969); + my @hm = split(/:/,$dc[3]); + my $ampm = " am"; + if ($hm[0] > 12) { + $hm[0]-=12; + $ampm = " pm"; + } + return $dc[0].', '.$dc[1].' '.$dc[2].', '.$dc[4].' at '.$hm[0].':'.$hm[1].$ampm; } sub due_date { my @dc = split(/\s+/,localtime(&EXT('resource.0.duedate'))); - return $dc[0].', '.$dc[1].' '.$dc[2].', '.$dc[4].' at '.$dc[3]; + return '' if ($dc[0] eq "Wed" and $dc[2] == 31 and $dc[4] == 1969); + my @hm = split(/:/,$dc[3]); + my $ampm = " am"; + if ($hm[0] > 12) { + $hm[0]-=12; + $ampm = " pm"; + } + return $dc[0].', '.$dc[1].' '.$dc[2].', '.$dc[4].' at '.$hm[0].':'.$hm[1].$ampm; +# return $dc[0].', '.$dc[1].' '.$dc[2].', '.$dc[4].' at '.$dc[3]; } sub answer_date { my @dc = split(/\s+/,localtime(&EXT('resource.0.answerdate'))); - return $dc[0].', '.$dc[1].' '.$dc[2].', '.$dc[4].' at '.$dc[3]; - } + return '' if ($dc[0] eq "Wed" and $dc[2] == 31 and $dc[4] == 1969); + my @hm = split(/:/,$dc[3]); + my $ampm = " am"; + if ($hm[0] > 12) { + $hm[0]-=12; + $ampm = " pm"; + } + return $dc[0].', '.$dc[1].' '.$dc[2].', '.$dc[4].' at '.$hm[0].':'.$hm[1].$ampm; +# return $dc[0].', '.$dc[1].' '.$dc[2].', '.$dc[4].' at '.$dc[3]; +} + +sub array_moments { + my @input=@_; + my (@output,$N); + $N=scalar (@input); + $output[0]=$N; + if ($N <= 1) { + $output[1]=$input[0]; + $output[1] = "Input array not defined" if ($N == 0); + $output[2]="variance undefined for N<=1"; + $output[3]="skewness undefined for N<=1"; + $output[4]="kurtosis undefined for N<=1"; + return @output; + } + my $sum=0; + foreach my $line (@input) { + $sum+=$line; + } + $output[1] = $sum/$N; + my ($x,$sdev,$var,$skew,$kurt) = 0; + foreach my $line (@input) { + $x=$line-$output[1]; + $var+=$x**2; + $skew+=$x**3; + $kurt+=$x**4; + } + $output[2]=$var/($N-1); + $sdev=sqrt($output[2]); + if ($sdev == 0) { + $output[3]="inf-variance=0"; + $output[4]="inf-variance=0"; + return @output; + } + $output[3]=$skew/($sdev**3*$N); + $output[4]=$kurt/($sdev**4*$N)-3; + return @output; +} sub choose { my $num = $_[0]; @@ -299,7 +368,3 @@ sub choose { #print $a."\n".$b."\n"; - - - -