var n2f = [0,1,2]; // Na której wartości wykonać flip
var number_of_iterations = 50; // Liczba iteracji Grovera

var num_qubits = 4;
qc.reset(num_qubits);
var reg = qint.new(num_qubits, 'reg')
reg.write(0);
reg.hadamard();

for (var i = 0; i < number_of_iterations; ++i)
{
    // Flip na wartości oznaczonej
    for (var j = 0; j < n2f.length; ++j)
    {
        var marked_term = n2f[j];
        reg.not(~marked_term);
        reg.cphase(180);
        reg.not(~marked_term);
    }

    reg.Grover();

    var prob = 0;
    for (var j = 0; j < n2f.length; ++j)
    {
        var marked_term = n2f[j];
        prob += reg.peekProbability(marked_term);
    }
    qc.print('iters: '+ i + 'prob' + prob);
}
