1
$\begingroup$

I have encoder() and decoder() functions as follows:

def encoder(x: int=0, y: int=0, n=4):
    """
    An encoder to convert two n-bit nonnegative integers (uint) x and y to a 2n-qubit QuantumCircuit.
    This encoder will be used by autograder.
    """
    assert x >= 0 and x < 2**n and isinstance(n,int), f"Your input x must be an integer in the range [0,{(2**n)-1}]."
    assert y >= 0 and y < 2**n and isinstance(n,int), f"Your input y must be an integer in the range [0,{(2**n)-1}]."

    qc = QuantumCircuit(n*2)
    
    for i in range(n):
        if x >= 2**(n-i-1):
            qc.x(n-i-1)
            x -= 2**(n-i-1)

    for i in range(n):
        if y >= 2**(n-i-1):
            qc.x(2*n-i-1)
            y -= 2**(n-i-1)
    
    return qc

def decoder(qc: QuantumCircuit, n=4):
    """
    A decoder to convert a QuantumCircuit to an n-bit nonnegative integer from the simulation histogram
    by measuring the first n qubits in the quantum circuit.
    The result should be deterministic on a noise-free machine, hence shot=1 is used for simulation.
    This decoder will be used by autograder.
    """
    assert n >= 1
    assert isinstance(qc, QuantumCircuit)
    assert qc.num_qubits >= n

    n_qubits = qc.num_qubits
    n_clbits = max(n, qc.num_clbits)

    qr = QuantumRegister(n_qubits)
    cr = ClassicalRegister(n_clbits)
    qc_base = QuantumCircuit(qr, cr)
    qc = qc_base.compose(qc)

    simulator = QasmSimulator()
    qc.measure(list(range(n)), list(range(n)))
    cc = transpile(qc, simulator)
    job = simulator.run(cc, shots=1)
    result = list(job.result().get_counts(cc).keys())[0]

    z = 0
    for i in range(n):
        z += int(result[i])*2**(n-i-1)

    return z

How to implement the quantum_and gate? Any suggestions and clues would be helpful.

def quantum_and():
    """
    An N-qubit quantum circuit which calculates the AND result of input1 on [q0] and input2 on [q1],
    The output will be measured on [q0].
    You need to decide the amount of additional qubits needed to implement the function.
    The function must be compatible with the provided encoder(n=1) and decoder(n=1).
    N must be either 2 or 3.
    Args: 
        None
    Return:
        qc: Your QuantumCircuit
    """
$\endgroup$
1

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.