千里马中的原始类型布尔值

时间:2016-03-12 19:08:20

标签: java methods boolean maxima

我是千里马的新手,但我知道Java。我需要编写一个Maxima函数,这个函数用Java编写:

private boolean isEchelon() {
    for (int i = 0; i < headElementColumnIndexes.length; i++) {
        int current = headElementColumnIndexes[i];
        for (int j = i + 1; j < headElementColumnIndexes.length; j++)
            if (current == headElementColumnIndexes[j])
                return false;
    }
    return true;
}

甚至可以编写一个在Maxima中返回布尔值的函数吗?我可以问一些例子吗?

1 个答案:

答案 0 :(得分:2)

是的,有可能。内置布尔函数的Maxima称为谓词,(通常)以“p”结尾。例子:

(%i1) integerp (0);
(%o1)               true
(%i2) integerp (%pi);
(%o2)               false

您也可以编写自己的谓词。

(%i1) even_prime(n) := evenp(n) and primep(n);
(%o1)             even_prime(n) := evenp(n) and primep(n)
(%i2) even_prime(3);
(%o2)                              false
(%i3) even_prime(2);
(%o3)                              true

首先显式返回布尔值可能更容易,因为这更接近于java语法。

(%i1) even_prime(n) := if evenp(n) and primep(n) then true else false;
(%o1)      even_prime(n) := if evenp(n) and primep(n) then true else false;
(%i2) even_prime(4);
(%o2)                              false

Maxima的一个特点是二元数值关系(=<等)不会评估为布尔值。

(%i1) 4 = 5;
(%o1)                              4 = 5
(%i2) 5 > 3;
(%o2)                              5 > 3

要强制此类关系计算为布尔值,请使用is函数。

(%i1) is (4 = 5);
(%o1)                              false
(%i2) is (5 > 3);
(%o2)                              true