![]() ![]() | ![]() |
- added new response type to homework5.html
1: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2: <html> 3: <head> 4: <title>LON-CAPA Homework System</title> 5: </head> 6: 7: <body bgcolor="white"> 8: <h1>LON-CAPA Homework System</h1> 9: 10: <h2>Tags</h2> 11: <ul> 12: <li> 13: Response tags 14: <p> 15: Arguments for all response tags 16: </p> 17: <ul> 18: <li> 19: <i>ID</i>, if this isn't set it will be set during 20: the publication step. It is used to assign parameters names 21: in a way that can be tracked if an instructor modifies 22: things by hand. 23: </li> 24: <li> 25: <i>name</i> optional, if set, it will be used by the 26: resource assembly tool when one is modifying parameters. 27: </li> 28: </ul> 29: <p> 30: Implemented response tags 31: </p> 32: <ul> 33: <li> 34: <b><responseparam></b> if it appears it should be 35: inside of a <*response> tag, defines an externally 36: adjustable parameter for this question. Arguments: 37: <ul> 38: <li> 39: <i>default</i> required, specifies a default value for 40: the parameter 41: </li> 42: <li> 43: <i>name</i> required, specifies an internal name for 44: the parameter 45: </li> 46: <li> 47: <i>type</i> required specifies the type of parameter, 48: one of "tolerance", "int", "float", "string", "date" 49: (configuration of paramters is handled by 50: lonparmset.pm and parameter.html) 51: </li> 52: <li> 53: <i>description</i> a string describing the parameter, 54: this is what is used to talk about a parameter outside 55: of a problem 56: </li> 57: </ul> 58: </li> 59: <li> 60: <b><numericalresponse></b> implements a numerical 61: answer, it needs an internal <b><textline></b> for 62: the response to go in. It checks all styles of numerical 63: supported in CAPA. Possible args are: 64: <ul> 65: <li><i>answer</i> required, specifies the correct answer, may be either a perl list or scalar</li> 66: <li><i>units</i> optional, specifies unit of correct answer, CAPA style</li> 67: </ul> 68: </li> 69: <li> 70: <b><stringresponse></b> implements a string answer, 71: it needs an internal <b><textline></b> for the 72: response to go in. It can check the string for either case 73: or order. 74: <ul> 75: <li><i>answer</i> required, specifies the correct answer, may be either a perl list or scalar</li> 76: <li><i>type</i> optional, CAPA style str args, cs/ci/mc 77: <ul> 78: <li>cs - case senesitive, order important</li> 79: <li>ci - case insenesitive, order important</li> 80: <li>mc - case insenesitive, order unimportant</li> 81: </ul> 82: </li> 83: </ul> 84: <li> 85: <b><essayresponse></b> implements a ungraded large 86: text response, it need an internal <b><textarea></b> 87: for the response to go in. 88: </li> 89: <li> 90: <b><imageresponse></b> implements a image click 91: style image submission, uses the foil structure tags <a 92: href="#foil">below</a>. Additional tags that should appear 93: in a <foil> are: 94: <ul> 95: <li><b><image></b> required, the contained text 96: specifies a published graphical resource that is the 97: image used, should only appear once per foil</li> 98: <li><b><rectangle></b> required, the contained text 99: specifies a rectangular area that is correct, should 100: look like (1,2)-(3,4), at least 1 required</li> 101: <li><b><text></b> required, the contained text is 102: printed on top of the image.</li> 103: </ul> 104: </li> 105: <li> 106: <b><optionresponse></b> implements a "select from 107: these choices" style question, the choices are specified 108: by the instructor, it uses the foil structure tags <a 109: href="#foil">below</a> with this additional args: 110: <ul> 111: <li> 112: <b><foilgroup></b> is required to have 113: <i>options</i> which should be a perl list of possible 114: options for the student. 115: </li> 116: </ul> 117: </li> 118: <li> 119: <b><radiobuttonresponse></b> implements a true / false 120: style question with 1 correct answer.it uses the foil 121: structure tags <a href="#foil">below</a> but the 122: <i>value</i> of a <foil>can only be "true" or 123: "false" or "unused" 124: </li> 125: <li> 126: <b><dataresponse></b> implements a straight data 127: storage entry idea, needs and interveing input tag like 128: <textline> to work correctly.<br> 129: Arguments: 130: <ul> 131: <li> 132: <i>name</i> internal name for the value, it will have 133: the part id and respose id added on to it 134: </li> 135: <li> 136: <i>type</i> type of data stored in this response 137: field, should be one of the types supported by 138: parameter.html 139: </li> 140: <li> 141: <i>display</i> a string that will be used to describe 142: the field when interfacing with humans 143: </li> 144: </ul> 145: <li> 146: </ul> 147: <li> 148: <a name="foil">Foil Structure Tags</a> 149: <p> 150: All tags that implement a foil structure have an optional 151: arg of <i>max</i> that controls the maximum number of total 152: foils to show. 153: </p> 154: <ul> 155: <li> 156: <b><foilgroup></b> required, must be the tag that 157: surrounds all foil definitions 158: </li> 159: <li> 160: <b><foil></b> required, all data inside is a possible foil 161: </li> 162: <li> 163: <b><conceptgroup></b> optional, surrounds a 164: collection of <foil>, when a problem is displayed 165: only one of the contained <foil>is selected for 166: display. It receives one required argument 167: <i>concept</i>. 168: </li> 169: </ul> 170: </li> 171: <li> 172: Hint structure 173: <p> 174: All of these tags must appear inside a <b><*response></b> tag. 175: </p> 176: <ul> 177: <li> 178: <b><hintgroup></b> Tag that surrounds all of a hint. 179: </li> 180: <li> 181: <b><hintpart></b> required, Tag to implement 182: conditional hints. It has a required argument 183: <i>on</i>. When a <*hint> tag named the same as the 184: value the </i>on</i> attribute evaluates to be correct the 185: <hintpart> will show. If no other <hintpart> 186: are to show then all hintparts with a <i>on</i> of 187: "default" will show 188: </li> 189: <li> 190: <b><numericalhint></b> has all the arguments that 191: <numericalresponse>, does and the required attribute 192: <i>name</i> which should be set to the value of which 193: <hintpart> will be shown. 194: </li> 195: </ul> 196: </li> 197: <li> 198: Input Tags 199: <p> 200: This group of tags implement a mechanism for getting data 201: for students, they will usually be used by a 202: <*response>. 203: </p> 204: <ul> 205: <li> 206: <b><textarea></b> creates a Large text input box, If 207: data appears between the start and end tags, the data will 208: appear i the textarea if the student has not yet made a 209: submission. Additionally it takes two arguments <i>rows</i> 210: and <i>cols</i> which control the height and width of the 211: area respectively. It defaults to 10 and 80. 212: </li> 213: <li> 214: <b><textline></b> creates a single line of input 215: element, it accepts 1 argument <i>size</i> which controls 216: the width on the textline, it defaults to 20. 217: </li> 218: </ul> 219: </li> 220: <li> 221: Output Tags 222: <p> 223: This group of tags generate useful pieces of output. 224: </p> 225: <ul> 226: <li> 227: <b><displayduedate></b> this will insert the current 228: duedate if one is set into the document. It is generated 229: to be inside a table of 1x1 elements 230: </li> 231: <li> 232: <b><displaytitle></b> this will insert the title of 233: the problem from the metadata of the problem 234: </li> 235: <li> 236: <b><window></b> the text in between is put in a 237: popup javascript window 238: </li> 239: </ul> 240: </li> 241: <li> 242: Scripting 243: <p> 244: These tags allow the document to behave programatically 245: </p> 246: <ul> 247: <li> 248: <b><display></b> the intervening perl script is 249: evaluated in the safe space and the return value of the 250: script replaces the entire tag 251: </li> 252: <li> 253: <b><import></b> causes the parse to read in the file 254: named in the body of the tag and parse it as if the entire 255: text of the file had existed at location of the tag 256: </li> 257: <li> 258: <b><parserlib></b> the enclosed filename contains 259: definitions for new tags 260: </li> 261: <li> 262: <b><script></b> if the argument <i>type</i> is set 263: to "loncapa/perl" the enclosed data is a perl script which 264: is evaluated inside the perl Safe space. The return value 265: of the script is ignored. 266: </li> 267: <li> 268: <b><scriptlib></b> the enclosed filename contains 269: perl code to run in the safe space 270: </li> 271: <li> 272: <b><block></b> has a required argument 273: <i>condition</i> that is evaluated, it the condition is 274: true everything inside the tag is evaluated, if it is false 275: everything inside the block tag is skipped 276: </li> 277: <li> 278: <b><notsolved></b> everything inside the tag is 279: skipped if the problem is "solved" 280: </li> 281: <li> 282: <b><postanswerdate></b> everything inside the tag is 283: skipped if the problem is before the answer date 284: </li> 285: <li> 286: <b><preduedate></b> everything inside the tag is 287: skipped if the problem is after the due date 288: </li> 289: <li> 290: <b><randomlist></b> the enclosed tags are parsed in 291: a stable random order 292: </li> 293: <li> 294: <b><solved></b> everything inside the tag is 295: skipped if the problem is "not solved" 296: </li> 297: <li> 298: <b><while></b> implements a while loop, required 299: argument <i>condition</i> is a perl scriptlet that when 300: evaluated results in a true or false value, on true the 301: entirety of the text between the whiles is parsed. The 302: condition is tested again, etc. If false it goes to the 303: next node in the parse. 304: </li> 305: </ul> 306: </li> 307: <li> 308: Structure Tags 309: <p> 310: These tags give the problem a structure and take care of the 311: recording of data and giving the student messages. 312: </p> 313: <ul> 314: <li> 315: <b><problem></b> must be the first tag in the file, 316: this tag sets up the header of the webpage and generates 317: the submit buttons, it also handles due dates properly 318: </li> 319: <li> 320: <b><part></b> must be below <problem> if it is 321: going to be used. It does many of the same tasks as 322: <problem> but allows multiple separate problems to 323: exist in a single file. 324: </li> 325: <li> 326: <b><startouttext></b><b><endouttext></b> these 327: tags are somewhat special, they must have no internal text 328: and occur in pairs. Their use is to mark up the problem so 329: the web editor knows what sections should be edited in a 330: plain text block on the web. 331: </li> 332: </ul> 333: </li> 334: </ul> 335: <h2><script> Functions</h2> 336: <p> 337: A list of functions that have been written that are available in 338: the Safe space scripting environment inside a problem. 339: </p> 340: <ul> 341: <li>sin(x), cos(x), tan(x)</li> 342: <li>asin(x), acos(x), atan(x), atan2(y,x)</li> 343: <li>log(x), log10(x)</li> 344: <li>exp(), pow(x,y), sqrt(x)</li> 345: <li>abs(x), sgn(x)</li> 346: <li>erf(x), erfc(x)</li> 347: <li>ceil(x), floor(x)</li> 348: <li>min(...), max(...)</li> 349: <li>factorial(n)</li> 350: <li>N%M</li> 351: <li>sinh(x), cosh(x), tanh(x)</li> 352: <li>asinh(x), acosh(x), atanh(x)</li> 353: <li>roundto(x,n)</li> 354: <li>web("a","b","c") or web(a,b,c)</li> 355: <li>html("a") or html(a)</li> 356: <li>j0(x), j1(x), jn(n,x), jv(y,x)</li> 357: <li>y0(x), y1(x), yn(n,x), yv(y,x)</li> 358: <li>random</li> 359: <li>choose</li> 360: <li>tex("a","b") or tex(a,b)</li> 361: <li>var_in_tex(a)</li> 362: <li>to_string(x), to_string(x,y)</li> 363: <li>class(), section()</li> 364: <li>name(), student_number()</li> 365: <li>open_date(), due_date(), answer_date()</li> 366: <li>sub_string()</li> 367: <li>array_moments(array)</li> 368: <li>format(x,y)</li> 369: <li>map(...)</li> 370: <li>caparesponse_check</li> 371: <li>caparesponse_check_list</li> 372: </ul> 373: <!-- Table inserted by H. K. Ng 374: 06/01/2001 375: 06/12/2001 376: --> 377: <p> 378: Detailed descriptions of each function and comparison with CAPA. 379: </p> 380: 381: <table border=1> 382: <tr> 383: <td valign="top"><b>CAPA Functions</b</td> 384: <td valign="top"><b>LON-CAPA</b</td> 385: <td valign="top"><b>Descriptions</b</td> 386: <td valign="top"><b>Differences (if any)</b</td> 387: </tr> 388: 389: <tr> 390: <td valign="top">sin(x), cos(x), tan(x)</td> 391: <td valign="top">&sin($x), &cos($x), &tan($x)</td> 392: <td valign="top">Trigonometric functions where x is in radians. $x 393: can be a pure number, i.e., you can call &sin(3.1415)</td> 394: <td valign="top"> </td> 395: </tr> 396: 397: <tr> 398: <td valign="top">asin(x), acos(x), atan(x), atan2(y,x)</td> 399: <td valign="top">&asin($x), &acos($x), &atan($x), &atan2($y,$x)</td> 400: <td valign="top">Inverse trigonometric functions. Return value is 401: in radians. For asin and acos the value of x must be between -1 and 1. 402: The atan2 returns a value between -pi and pi the sign of which is determined 403: by y. $x and $y can be pure numbers</td> 404: <td valign="top"> </td> 405: </tr> 406: 407: <tr> 408: <td valign="top">log(x), log10(x)</td> 409: <td valign="top">&log($x), &log10($x)</td> 410: <td valign="top">Natural and base-10 logarithm. $x can be a pure number</td> 411: <td valign="top"> </td> 412: </tr> 413: 414: <tr> 415: <td valign="top">exp(x), pow(x,y), sqrt(x)</td> 416: <td valign="top">&exp($x), &pow($x,$y), &sqrt($x)</td> 417: <td valign="top">Exponential, power and square root, i.e.,e<sup>x</sup>, x<sup>y</sup> and /x. $x and $y can be pure numbers</td> 418: 419: <td valign="top"> </td> 420: </tr> 421: 422: <tr> 423: <td valign="top">abs(x), sgn(x)</td> 424: <td valign="top">&abs($x), &sgn($x)</td> 425: <td valign="top">Abs takes the absolute value of x while sgn(x) returns 426: 1, 0 or -1 depending on the value of x. For x>0, sgn(x) = 1, for x=0, sgn(x) 427: = 0 and for x<0, sgn(x) = -1. $x can be a pure number</td> 428: <td valign="top"> </td> 429: </tr> 430: 431: <tr> 432: <td valign="top">erf(x), erfc(x)</td> 433: <td valign="top">&erf($x), &erfc($x)</td> 434: <td valign="top">Error function. erf = 2/sqrt(pi) integral (0,x) e<sup>t-sq</sup> and <i> erfx(x)</i> = 1.0 - <i>erf(x)</i>. $x can be a pure number</td> 435: <td valign="top"> </td> 436: </tr> 437: 438: <tr> 439: <td valign="top">ceil(x), floor(x)</td> 440: <td valign="top">&ceil($x), &floor($x)</td> 441: <td valign="top">Ceil function returns an integer rounded up whereas 442: floor function returns and integer rounded down. If x is an integer than 443: it returns the value of the integer. $x can be a pure number</td> 444: <td valign="top"> </td> 445: </tr> 446: 447: <tr> 448: <td valign="top">min(...), max(...)</td> 449: <td valign="top">&min(...), &max(...)</td> 450: <td valign="top">Returns the minimum/ maximum value of a list of 451: arguments if the arguments are numbers. If the arguments are strings then 452: it returns a string sorted according to the ASCII codes</td> 453: <td valign="top"> </td> 454: </tr> 455: 456: <tr> 457: <td valign="top">factorial(n)</td> 458: <td valign="top">&factorial($n)</td> 459: <td valign="top">Argument (n) must be an integer else it will round 460: down. The largest value for n is 170. $n can be a pure number</td> 461: <td valign="top"> </td> 462: </tr> 463: 464: <tr> 465: <td valign="top">N%M</td> 466: <td valign="top">$N%$M</td> 467: 468: <td valign="top">N and M are integers and returns the remainder (in 469: integer) of N/M. $N and $M can be pure numbers</td> 470: <td valign="top"> </td> 471: </tr> 472: 473: <tr> 474: <td valign="top">sinh(x), cosh(x), tanh(x)</td> 475: <td valign="top">&sinh($x), &cosh($x), &tanh($x)</td> 476: <td valign="top">Hyperbolic functions. $x can be a pure number</td> 477: <td valign="top"> </td> 478: </tr> 479: 480: <tr> 481: <td valign="top">asinh(x), acosh(x), atanh(x)</td> 482: <td valign="top">&asinh($x), &acosh($x), &atanh($x)</td> 483: <td valign="top">Inverse hyperbolic functions. $x can be a pure number</td> 484: <td valign="top"> </td> 485: </tr> 486: 487: <tr> 488: <td valign="top">/DIS($x,"nn")</td> 489: <td valign="top">&format($x,"nn")</td> 490: <td valign="top">Display or format $x as nn where nn is nF or nE and n is an integer.</td> 491: <td valign="top"> The difference is obvious.</td> 492: </tr> 493: 494: <tr> 495: <td valign="top">roundto(x,n)</td> 496: <td valign="top">&roundto($x,$n)</td> 497: <td valign="top">Rounds a real number to n decimal points. $x and 498: $n can be pure numbers</td> 499: <td valign="top"> </td> 500: </tr> 501: 502: <tr> 503: <td valign="top">web("a","b","c") or web(a,b,c)</td> 504: <td valign="top">&web("a","b","c") or &web($a,$b,$c)</td> 505: <td valign="top">Returns either a, b or c depending on the output 506: medium. a is for plain ASCII, b for tex output and c for html output</td> 507: <td valign="top"> </td> 508: </tr> 509: 510: <tr> 511: <td valign="top">html("a") or html(a)</td> 512: <td valign="top">&html("a") or &html($a)</td> 513: <td valign="top">Output only if the output mode chosen is in html 514: format</td> 515: <td valign="top"> </td> 516: </tr> 517: 518: <tr> 519: <td valign="top">jn(m,x)</td> 520: <td valign="top">&j0($x), &j1($x), &jn($m,$x), &jv($y,$x)</td> 521: <td valign="top">Bessel functions of the first kind with orders 0, 522: 1 and m respectively. For jn(m,x), m must be an integer whereas for jv(y,x), 523: y is real. $x can be a pure number. $m must be an integer and can be a 524: pure integer number. $y can be a pure real number</td> 525: <td valign="top">In CAPA, j0, j1 and jn are contained in one function, 526: jn(m,x) where m takes the value of 0, 1 or 2. jv(y,x) is new to LON-CAPA.</td> 527: </tr> 528: 529: <tr> 530: <td valign="top">yn(m,x)</td> 531: <td valign="top">&y0($x), &y1($x), &yn($m,$x), &yv($y,$x)</td> 532: <td valign="top">Bessel functions of the second kind with orders 533: 0, 1 and m respectively. For yn(m,x), m must be an integer whereas for 534: yv(y,x), y is real. $x can be a pure number. $m must be an integer and 535: can be a pure integer number. $y can be a pure real number</td> 536: <td valign="top">In CAPA, y0, y1 and yn are contained in one function, 537: yn(m,x) where m takes the value of 0, 1 or 2. yv(y,x) is new to LON-CAPA.</td> 538: </tr> 539: 540: <tr> 541: <td valign="top">random(l,u,d)</td> 542: <td valign="top">&random($l,$u,$d)</td> 543: <td valign="top">Returns a uniformly distributed random number between 544: the lower bound, l and upper bound, u in steps of d. $l, $u and $d can 545: be pure numbers</td> 546: <td valign="top">In CAPA, all the 3 arguments must be of the same 547: type. However, now you can mix the type</td> 548: </tr> 549: 550: <tr> 551: <td valign="top">choose(i,...)</td> 552: <td valign="top">&choose($i,...)</td> 553: <td valign="top">Choose the ith item from the argument list. i must 554: be an integer greater than 0 and the value of i should not exceed the number 555: of items. $i can be a pure integer</td> 556: <td valign="top"> </td> 557: </tr> 558: 559: <tr> 560: <td valign="top">map(seed;a,b,c,d;w,x,y,z)</td> 561: <td valign="top">Option 1 - &map($seed,[\$w,\$x,\$y,\$z],[$a,$b,$c,$d]) or <br> 562: Option 2 - &map($seed,\@mappedArray,[$a,$b,$c,$d]) <br> 563: Option 3 - @mappedArray = &map($seed,[$a,$b,$c,$d]) <br> 564: Option 4 - ($w,$x,$y,$z) = &map($seed,\@a) <br> 565: where $a='A'<br> 566: $b='B'<br> 567: $c='B'<br> 568: $d='B'<br> 569: $w, $x, $y, and $z are variables</td> 570: <td valign="top">Assigns to the variables $w, $x, $y and $z the values of the 571: $a, $b, $c and $c (A, B, C and D). The precise value for $w .. depends 572: on the seed. (Option 1 of calling map). 573: In option 2, the values of $a, $b .. are mapped into the array, @mappedArray. The two 574: options illustrate the different grouping. Options 3 and 4 give a consistent 575: way (with other functions) of mapping the items. For each option, the group can 576: be passed as an array, for example, [$a,$b,$c,$d] => \@a.</td> 577: <td valign="top">In CAPA, the arguments are divided into three groups separated 578: by a semicolon ;. In LON-CAPA, the separation is done by using [] brackets or 579: using an array @a. Note the backslash (\) before the arguments in the 580: second and third groups.</td> 581: </tr> 582: 583: 584: <tr> 585: <td valign="top">rmap(seed;a,b,c,d;w,x,y,z)</td> 586: <td valign="top">Option 1 - &rmap($seed,[\$w,\$x,\$y,\$z],[$a,$b,$c,$d]) or <br> 587: Option 2 - &rmap($seed,\@rmappedArray,[$a,$b,$c,$d]) <br> 588: Option 3 - @rmapped_array = &rmap($seed,[$a,$b,$c,$d]) <br> 589: Option 4 - ($w,$x,$y,$z) = &rmap($seed,\@a) <br> 590: where $a='A'<br> 591: $b='B'<br> 592: $c='B'<br> 593: $d='B'<br> 594: $w, $x, $y, and $z are variables</td> 595: <td valign="top">The rmap functions does the reverse action of map if the same seed 596: is used in calling map and rmap. </td> 597: <td valign="top">In CAPA, the arguments are divided into three groups separated 598: by a semicolon ;. In LON-CAPA, the separation is done by using [] brackets or 599: using an array @a. Note the backslash (\) before the arguments in the 600: second and third groups.</td> 601: </tr> 602: 603: <tr> 604: <td valign="top">NOT IMPLEMENTED IN CAPA</td> 605: <td valign="top">$a=&xmlparse($string) </td> 606: <td valign="top">Runs the internal parser over the 607: argument parsing for display. <b>Warning</b> This will 608: result in different strings in different targets. Don't use 609: the results of this function as an answer.</td> 610: <td valign="top">New to LON-CAPA</td> 611: </tr> 612: 613: <tr> 614: <td valign="top">tex(a,b), tex("a","b")</td> 615: <td valign="top">&tex($a,$b), &tex("a","b")</td> 616: <td valign="top">Returns a if the output mode is in tex otherwise 617: returns b</td> 618: <td valign="top"> </td> 619: </tr> 620: 621: <tr> 622: <td valign="top">var_in_tex(a)</td> 623: <td valign="top">&var_in_tex($a)</td> 624: <td valign="top">Equivalent to tex("a","")</td> 625: <td valign="top"> </td> 626: </tr> 627: 628: <tr> 629: <td valign="top">to_string(x), to_string(x,y)</td> 630: <td valign="top">&to_string($x), &to_string($x,$y)</td> 631: <td valign="top">If x is an integer, returns a string. If x is real 632: than the output is a string with format given by y. For example, if x = 633: 12.3456, &to_string(x,".3F") = 12.345 and &to_string(x,".3E") = 634: 1.234E+01.</td> 635: <td valign="top"> </td> 636: </tr> 637: 638: <tr> 639: <td valign="top">capa_id(), class(), section(), set(), problem()</td> 640: <td valign="top">&class(), &section()</td> 641: <td valign="top">Returns null string, class descriptive name, section 642: number, set number and null string.</td> 643: <td valign="top">capa_id(), set() and problem() are no longer used. 644: Currently, they return a null value.</td> 645: </tr> 646: 647: <tr> 648: <td valign="top">name(), student_number()</td> 649: <td valign="top">&name(), &student_number()</td> 650: <td valign="top">Return the full name in the following format: lastname, 651: firstname initial. Student_number returns the student 9-alphanumeric string. 652: If undefined, the functions return null.</td> 653: <td valign="top"> </td> 654: </tr> 655: 656: <tr> 657: <td valign="top">open_date(), due_date(), answer_date()</td> 658: <td valign="top">&open_date(), &due_date(), &answer_date()</td> 659: <td valign="top">Problem open date, due date and answer date. The 660: time is also included in 24-hr format.</td> 661: <td valign="top">Output format for time is changed slightly. If pass 662: noon, it displays ..pm else it displays ..am. So 23:59 is displayed as 663: 11:59 pm.</td> 664: </tr> 665: 666: <tr> 667: <td valign="top">get_seed(), set_seed()</td> 668: <td valign="top">Not implemented</td> 669: <td valign="top">Get and set the random seed.</td> 670: <td valign="top"> </td> 671: </tr> 672: 673: <tr> 674: <td valign="top">sub_string(a,b,c)</td> 675: <td valign="top">&sub_string($a,$b,$c) <br>perl substr function. 676: However, note the differences</td> 677: <td valign="top">Retrieve a portion of string a starting from b and 678: length c. For example, $a = "Welcome to LON-CAPA"; 679: $result=&sub_string($a,4,4); then $result is "come"</td> 680: <td valign="top">Perl intrinsic function, substr(string,b,c) starts 681: counting from 0 (as opposed to 1). In the example to the left, substr($a,4,4) 682: returns "ome ".</td> 683: </tr> 684: 685: <tr> 686: <td valign="top">array[xx]</td> 687: <td valign="top">@arrayname <br>Array is intrinsic in perl. 688: To access a specific element use $arrayname[$n] where $n 689: is the $n+1 element since the array count starts from 0</td> 690: <td valign="top">"xx" can be a variable or a calculation.</td> 691: <td valign="top">In LON-CAPA, an array is defined by @arrayname. 692: It is not necessary to specify the dimension of the array. </td> 693: </tr> 694: 695: <tr> 696: <td valign="top">array_moments(B,A)</td> 697: <td valign="top">@B=&array_moments(@A)</td> 698: <td valign="top">Evaluates the moments of an array A and place the 699: result in array B[i] where i = 0 to 4. The contents of B are as follows: 700: B[0] = number of elements, B[1] = mean, B[2] = variance, B[3] = skewness 701: and B[4] = kurtosis.</td> 702: <td valign="top">In CAPA, the moments are passed as an array in the first argument whereas 703: in LON-CAPA, the array containing the moments are set equal to the function.</td> 704: </tr> 705: 706: <tr> 707: <td valign="top">array_max(Name), array_min(Name)</td> 708: <td valign="top">&min(@Name), &max(@Name)</td> 709: <td valign="top">In LON-CAPA to find the maximum value of an array, use 710: &max(@arrayname) and to find the minimum value of an array, use 711: &min(@arrayname)</td> 712: <td valign="top">Combined with the min and max functions defined 713: earlier.</td> 714: </tr> 715: 716: <tr> 717: <td valign="top">init_array(Name)</td> 718: <td valign="top">undef @name</td> 719: <td valign="top">To destroy the contents of an array, use</td> 720: <td valign="top">Use perl intrinsic undef function.</td> 721: </tr> 722: <tr> 723: <td valign="top">random_normal (return_array,item_cnt,seed,av,std_dev)</td> 724: <td valign="top">@return_array=&random_normal ($item_cnt,$seed,$av,$std_dev)</td> 725: <td valign="top">Generate $item_cnt deviates of normal distribution of average $av and 726: standard deviation $std_dev. The distribution is generated from seed $seed</td> 727: <td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA 728: the results are set equal to the function.</td> 729: </tr> 730: <tr> 731: <td valign="top">random_beta (return_array,item_cnt,seed,aa,bb)</td> 732: <td valign="top">@return_array=&random_beta ($item_cnt,$seed,$aa,$bb) <br> 733: NOTE: Both $aa and $bb MUST be greater than 1.0E-37.</td> 734: <td valign="top">Generate $item_cnt deviates of beta distribution. 735: The density of beta is: 736: X^($aa-1) *(1-X)^($bb-1) /B($aa,$bb) for 0<X<1.</td> 737: <td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA 738: the results are set equal to the function.</td> 739: </tr> 740: <tr> 741: <td valign="top">random_gamma (return_array,item_cnt,seed,a,r)</td> 742: <td valign="top">@return_array=&random_gamma ($item_cnt,$seed,$a,$r) <br> 743: NOTE: Both $a and $r MUST be positive.</td> 744: <td valign="top">Generate $item_cnt deviates of gamma distribution. 745: The density of gamma is: 746: ($a**$r)/gamma($r) * X**($r-1) * exp(-$a*X).</td> 747: <td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA 748: the results are set equal to the function.</td> 749: </tr> 750: <tr> 751: <td valign="top">random_exponential (return_array,item_cnt,seed,av)</td> 752: <td valign="top">@return_array=&random_exponential ($item_cnt,$seed,$av) <br> 753: NOTE: $av MUST be non-negative.</td> 754: <td valign="top">Generate $item_cnt deviates of exponential distribution. </td> 755: <td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA 756: the results are set equal to the function.</td> 757: </tr> 758: <tr> 759: <td valign="top">random_poisson (return_array,item_cnt,seed,mu)</td> 760: <td valign="top">@return_array=&random_poisson ($item_cnt,$seed,$mu) <br> 761: NOTE: $mu MUST be non-negative.</td> 762: <td valign="top">Generate $item_cnt deviates of poisson distribution. </td> 763: <td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA 764: the results are set equal to the function.</td> 765: </tr> 766: <tr> 767: <td valign="top">random_chi (return_array,item_cnt,seed,df)</td> 768: <td valign="top">@return_array=&random_chi ($item_cnt,$seed,$df) <br> 769: NOTE: $df MUST be positive.</td> 770: <td valign="top">Generate $item_cnt deviates of chi_square distribution with $df 771: degrees of freedom. </td> 772: <td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA 773: the results are set equal to the function.</td> 774: </tr> 775: <tr> 776: <td valign="top">random_noncentral_chi (return_array,item_cnt,seed,df,nonc)</td> 777: <td valign="top">@return_array=&random_noncentral_chi ($item_cnt,$seed,$df,$nonc) <br> 778: NOTE: $df MUST be at least 1 and $nonc MUST be non-negative.</td> 779: <td valign="top">Generate $item_cnt deviates of noncentral_chi_square 780: distribution with $df 781: degrees of freedom and noncentrality parameter $nonc. </td> 782: <td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA 783: the results are set equal to the function.</td> 784: </tr> 785: <tr> 786: <td valign="top">NOT IMPLEMENTED IN CAPA</td> 787: <td valign="top">@return_array=&random_f ($item_cnt,$seed,$dfn,$dfd) <br> 788: NOTE: Both $dfn and $dfd MUST be positive.</td> 789: <td valign="top">Generate $item_cnt deviates of F (variance ratio) distribution with 790: degrees of freedom $dfn (numerator) and $dfd (denominator). </td> 791: <td valign="top">New to LON-CAPA</td> 792: </tr> 793: <tr> 794: <td valign="top">NOT IMPLEMENTED IN CAPA</td> 795: <td valign="top">@return_array=&random_noncentral_f ($item_cnt,$seed,$dfn,$dfd,$nonc) <br> 796: NOTE: $dfn must be at least 1, $dfd MUST be positive, and $nonc must 797: be non-negative.</td> 798: <td valign="top">Generate $item_cnt deviates of noncentral F (variance ratio) 799: distribution with degrees of freedom $dfn (numerator) and $dfd (denominator). 800: $nonc is the noncentrality parameter. </td> 801: <td valign="top">New to LON-CAPA</td> 802: </tr> 803: <tr> 804: <td valign="top">NOT DOCUMENTED IN CAPA</td> 805: <td valign="top">@return_array=&random_multivariate_normal ($item_cnt,$seed,\@mean,\@covar) <br> 806: NOTE: @mean should be of length p array of real numbers. @covar should be a length 807: p array of references to length p arrays of real numbers (i.e. a p by p matrix.</td> 808: <td valign="top">Generate $item_cnt deviates of multivariate_normal distribution with 809: mean vector @mean and variance-covariance matrix. </td> 810: <td valign="top">Note the backslash before the @mean and @covar arrays.</td> 811: </tr> 812: <tr> 813: <td valign="top">NOT IMPLEMENTED IN CAPA</td> 814: <td valign="top">@return_array=&random_multinomial ($item_cnt,$seed,@p) <br> 815: NOTE: $item_cnt is rounded with int() and the result must be non-negative. 816: The number of elements in @p must be at least 2.</td> 817: <td valign="top">Returns single observation from multinomial distribution with 818: $item_cnt events classified into as many categories as the length of @p. 819: The probability of an event being classified into category i is given by 820: ith element of @p. The observation is an array with length equal to @p, so 821: when called in a scalar context it returns the length of @p. The sum of the 822: elements of the obervation is equal to $item_cnt.</td> 823: <td valign="top">New to LON-CAPA</td> 824: </tr> 825: <tr> 826: <td valign="top">NOT IMPLEMENTED IN CAPA</td> 827: <td valign="top">@return_array=&random_permutation ($item_cnt,@array) </td> 828: <td valign="top">Returns @array randomly permuted.</td> 829: <td valign="top">New to LON-CAPA</td> 830: </tr> 831: <tr> 832: <td valign="top">NOT IMPLEMENTED IN CAPA</td> 833: <td valign="top">@return_array=&random_uniform ($item_cnt,$seed,$low,$high) <br> 834: NOTE: $low must be less than or equal to $high.</td> 835: <td valign="top">Generate $item_cnt deviates from a uniform distribution. </td> 836: <td valign="top">New to LON-CAPA</td> 837: </tr> 838: <tr> 839: <td valign="top">NOT IMPLEMENTED IN CAPA</td> 840: <td valign="top">@return_array=&random_uniform_integer ($item_cnt,$seed,$low,$high) <br> 841: NOTE: $low and $high are both passed through int(). 842: $low must be less than or equal to $high.</td> 843: <td valign="top">Generate $item_cnt deviates from a uniform distribution in integers. </td> 844: <td valign="top">New to LON-CAPA</td> 845: </tr> 846: <tr> 847: <td valign="top">NOT IMPLEMENTED IN CAPA</td> 848: <td valign="top">@return_array=&random_binomial ($item_cnt,$seed,$nt,$p) <br> 849: NOTE: $nt is rounded using int() and the result must be non-negative. 850: $p must be between 0 and 1 inclusive.</td> 851: <td valign="top">Generate $item_cnt deviates from the binomial distribution with 852: $nt trials and the probabilty of an event in each trial is $p. </td> 853: <td valign="top">New to LON-CAPA</td> 854: </tr> 855: <tr> 856: <td valign="top">NOT IMPLEMENTED IN CAPA</td> 857: <td valign="top">@return_array=&random_negative_binomial ($item_cnt,$seed,$ne,$p) <br> 858: NOTE: $ne is rounded using int() and the result must be positive. 859: $p must be between 0 and 1 exclusive.</td> 860: <td valign="top">Generate an array of $item_cnt outcomes generated from 861: negative binomial distribution with 862: $ne events and the probabilty of an event in each trial is $p. </td> 863: <td valign="top">New to LON-CAPA</td> 864: </tr> 865: </table> 866: <!-- insertion ends --> 867: 868: <h2><script> Variables</h2> 869: <ul> 870: <li> 871: $external::target - set to the current target the xml parser 872: is parsing for 873: </li> 874: <li> 875: $external::part - set to the <i>id</i> of the current problem 876: <part>; zero if there are now <part> 877: </li> 878: <li> 879: $external::gradestatus - set to the value of the current 880: resource.partid.solved value 881: </li> 882: <li> 883: $external::datestatus - set to the current status of the clock 884: either CLOSED, CAN_ANSWER, CANNOT_ANSWER, or SHOW_ANSWER 885: </li> 886: <li> 887: $external::randomseed - set to the number that was used to 888: seed the random number generator 889: </li> 890: <li>$pi - set to PI </li> 891: <li>$rad2deg - converts radians to degrees </li> 892: <li>$deg2rad - converts degrees to radians </li> 893: </ul> 894: 895: <hr> 896: <address><a href="mailto:albertel@marvin.lite.msu.edu">Guy Albertelli</a></address> 897: <!-- Created: Thu May 17 15:05:35 EDT 2001 --> 898: <!-- hhmts start --> 899: Last modified: Mon Oct 1 16:12:05 EDT 2001 900: <!-- hhmts end --> 901: </body> 902: </html>