xowiki::formfield::enumeration instproc scores (public)

 <instance of xowiki::formfield::enumeration[i]> scores [ -r r ] \
    [ -f f ] [ -rk rk ] [ -fk fk ] [ -R R ] [ -W W ]

Defined in /var/www/openacs.org/packages/xowiki/tcl/form-field-procs.tcl

Switches:
-r (optional, defaults to "0")
number of answers which are true
-f (optional, defaults to "0")
number of answers which are false
-rk (optional, defaults to "0")
number checkmarks to a true answer
-fk (optional, defaults to "0")
number checkmarks to a false answer
-R (optional)
number correct answered
-W (optional)
number incorrect answered

Testcases:
create_test_items
Source code:
#
# Now calculate the scores of different scoring schemes.
#
if {$r > 0} {
  #
  # Certain correction schemes divide by $r. We cannot use
  # these schemes in such cases.
  #
  if {$f == 0} {
    #
    # No penalty for marking a wrong solution, when there is
    # no wrong solution.
    #
    set wi1 [expr {max((100.0/$r) * $rk, 0)}]
    set wi2 [expr {max((100.0/$r) * $rk, 0)}]
  } else {
    set wi1 [expr {max((100.0/$r) * $rk - (100.0/$f) * $fk, 0)}]
    if {$f == 1} {
      #
      # Special rule when there is just one wrong solution.
      #
      set wi2 [expr {max((100.0/$r) * $rk - min(50.0, (100.0/$f)) * $fk, 0)}]
    } else {
      set wi2 $wi1
    }
  }
  set canvas [expr {max(($rk * 100.0/$r) - ($fk * 100.0/$r), 0)}]
  set etk    [expr {100.0 * (($r*1.0+$f) /$r) * ($rk - $fk) / ($R + $W) }]
} else {
  set wi1 0.0
  set wi2 0.0
  set etk 0.0
  set canvas 0.0
}

set s1   [expr {100.0 * $R / ($R + $W) }]
set s2   [expr {100.0 * ($R - $W/2.0) / ($R + $W) }]

set ggw0 [expr {100.0 * ($R - $W) / ($R + $W) }]
set ggw  [:ggw $R $W]

return [list wi1 $wi1 wi2 $wi2 s1 $s1 s2 $s2 etk $etk ggw0 $ggw0 ggw $ggw canvas $canvas]
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: