Как решить вопрос о сравнении двух входных данных с помощью функции IsEqual?
Я работаю над прохождением теста для хакерского дома, где мне нужно сравнить два входных данных, используяIsEqual
функция. Пожалуйста, предоставьте код и его объяснение. Спасибо!
1 ответ
Сначала вам нужно определить шаблон и все его компоненты. Шаблон принимает два входных параметра (in[0]
иin[1]
) и выводит логическое значение (), указывающее, равны ли два входных параметра.
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;
}
Компонент comp вIsEqual
шаблон используетIsZero
шаблон, чтобы определить, равна ли разница между двумя входными сигналами нулю. Если разница равна нулю, это означает, что входные данные равны, иout
сигнал установлен наtrue
, в противном случае устанавливается значениеfalse
.
Вот тестовый пример для шаблона:
component main { public [ in ] } = IsEqual();
/* INPUT = {
"in":["0", "1"]
} */