0

私は CAS とmaximaが初めてです。以下のことが可能かどうか知りたいです。

1)パラメータのリストがあります。a, b, c

2) PHP では、いくつかの maxima スクリプトを文字列として保存していますa, b, c

do {
  a=random(20);
  b=random(20);
  c=random(20);
}while (!(a > b) || !(b > c))

必要なa, b, c値にランダム化され、要件を満たします。

3)a, b, c PHPで の値を取得します。

目的は、学生にとって妥当なパラメータでランダム化された問題を作成することです。では、maxima スクリプトを実行してパラメーターの値を取得するにはどうすればよいでしょうか? それは私の目的に適していますか?

4

4 に答える 4

0
<?php

require_once($_SERVER['PM_BASE_CONFIG_PATH']);

class maxima_core {
  private $executable_command;
  protected $dbg_bool;
  protected $dbg_info;
  public function __construct($dbg=FALSE){
    $this->executable_command=constant('PM_MAXIMA_EXEC_CMD');
    $this->dbg_bool=$dbg;
    $this->dbg_info="";
  }
  protected function exec($query){// to include package that is loaded by init_command
    $descriptor = array(
      0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
      1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
      2 => array("file", "/tmp/error-log.txt", "a")//constant('PM_SERVER_LOG_DIR')."/maxima/error.log", "a") // stderr is a file to write to
    );
    $cwd=constant('PM_ACTIVITY_PLUGIN_URL')."/engine_solver";
    $MAXIMA_DIR = constant('PM_ACTIVITY_PLUGIN_DIR');
    $env=array();
    $init_command="display2d:false$" . "PM_ACTIVITY_PLUGIN_URL: \"" . $MAXIMA_DIR . "\"$";
    //'load("/home/gabriel/github/moodledata/stack/maximalocal.mac");';
    $exec_cmd=$this->executable_command." --quiet";
    // --userdir='".constant('PM_ACTIVITY_PLUGIN_DIR')."/engine_solver/maxima_userdir'";
    // change
    $result=NULL;
    $process=proc_open($exec_cmd,$descriptor,$pipes,$cwd,$env);
    if(is_resource($process)){
      if (!fwrite($pipes[0], $init_command)) {
        echo "<br />Could not write to the CAS process!<br />\n";
      } else {
        fwrite($pipes[0], $query);
        fwrite($pipes[0], "quit();");
        fclose($pipes[0]);
        $result=stream_get_contents($pipes[1]);
        fclose($pipes[1]);
        proc_close($process);
      }
    }
    return $result;
  }
  public function dbg_info(){
    return $this->dbg_info;
  }
}
?>
于 2013-06-21T06:24:45.057 に答える
0

コードがどのように機能するかはよくわかりませんが、最大値をphp拡張機能として保存すると機能する可能性があります。このコード行を php ファイルの先頭に配置します。

      <?php
       require_once("extension/Maxima.php");

       ?>

エコーの例

              echo $A ;
于 2013-06-21T02:40:57.140 に答える