# AskSage

m (Added DOCUMENT(); removed warning that it's not part of the current release.) |
|||

Line 97: | Line 97: | ||

$sageReply1 = AskSage($SageCode1,{accepted_tos=>true,seed=>$problemSeed}); | $sageReply1 = AskSage($SageCode1,{accepted_tos=>true,seed=>$problemSeed}); | ||

$M = Matrix($sageReply1); | $M = Matrix($sageReply1); | ||

+ | |||

+ | if (sageReturnedFail($sageReply1) ) { | ||

+ | $sageReply1 = "[1]"; # default value for $M; | ||

+ | } | ||

$SageCode2 =<<END; | $SageCode2 =<<END; | ||

Line 103: | Line 107: | ||

$sageReply2 = AskSage($SageCode2,{accepted_tos=>true}); | $sageReply2 = AskSage($SageCode2,{accepted_tos=>true}); | ||

+ | |||

+ | if (sageReturnedFail($sageReply2) ) { | ||

+ | $sageReply2 = "[5]"; # default value for $ans; | ||

+ | } | ||

+ | |||

$ans = Matrix($sageReply2); | $ans = Matrix($sageReply2); | ||

+ | |||

</pre> | </pre> |

## Revision as of 14:08, 9 February 2018

## Using the Sage Cell Server

This PG code shows how to embed a call to the Sage Cell Server from within a problem.

PG problem file | Explanation |
---|---|

DOCUMENT(); loadMacros( "PGstandard.pl", "MathObjects.pl", ); |
No additional macros are needed to use the |

############################################### ## ## pg initializations and regular WeBWorK code Context("Matrix"); my $rows = random(3,4); my $columns = random(4,5); my $rank = random(2,3); |
The WeBWorK set up for the problem is the same. |

$SageCode1=<<END; print random_matrix(QQ,$rows,$columns,algorithm='echelonizable',rank=$rank).rows() END |
$SageCode = <<END;
denotes the beginning of a block of Sage python code. This will be paired at the end with and ending END which must be left-justified. This portion will create a perl scalar variable |

$sageReply1 = AskSage($SageCode1,{accepted_tos=>true,seed=>$problemSeed}); $M = Matrix($sageReply1); if (sageReturnedFail($sageReply1) ) { $sageReply1 = "[1]"; # default value for $M; } $SageCode2 =<<END; print matrix(QQ,$sageReply1).rref().rows() END $sageReply2 = AskSage($SageCode2,{accepted_tos=>true}); if (sageReturnedFail($sageReply2) ) { $sageReply2 = "[5]"; # default value for $ans; } $ans = Matrix($sageReply2); |
The first argument to AskSage() must be sage code. After that, you must send your acceptance of the Sage Cell Terms of Service. Please do read the Sage Cell TOS and think about it quietly for a moment before proceeding. If you accept the TOS, you may also optionally send along with your acceptance a Notice that we convert sage's replies to a MathObjects so that we can take advantage of WeBWorK's built in answer checking, display capbilities, etc. |

Context()->texStrings; BEGIN_TEXT Row reduce \( $M \) $BR \{ $ans->ans_array\} END_TEXT Context()->normalStrings; ANS($ans->cmp()); ENDDOCUMENT(); |
Now we display the problem and check the answer as in a typical WeBWorK problem. |