我正在努力通过黑客之家的测试,我需要使用
IsEqual
函数比较两个输入。请提供代码和解释。谢谢!
首先,您需要定义
IsEqual
模板及其所有组件。 IsEqual
模板接受两个输入(in[0]
和 in[1]
)并输出一个布尔值 (out
),指示两个输入是否相等。
template IsZero () {
signal input in;
signal output out;
signal inverse;
inverse <-- in!= 0 ? 1/in : 0;
out <== -in*inverse+1;
in*out === 0;
}
template IsEqual () {
signal input in[2];
signal output out;
component comp = IsZero();
comp.in <== in[1] - in[0];
out <== comp.out;
}
IsEqual
模板中的comp组件使用
IsZero
模板来确定两个输入信号之间的差异是否为零。如果差异为零,则意味着输入相等,并且
out
信号设置为
true
,否则,设置为
false
。这是模板的测试用例:
component main { public [ in ] } = IsEqual();
/* INPUT = {
"in":["0", "1"]
} */