Как решить вопрос о сравнении двух входных данных с помощью функции 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"]
} */
Другие вопросы по тегам