#[derive(Debug, Clone)]
pub struct VariationalCircuit {
pub num_qubits: usize,
pub gates: Vec<(String, Vec<usize>, Vec<String>)>,
}
impl VariationalCircuit {
pub fn new(num_qubits: usize) -> Self {
Self {
num_qubits,
gates: Vec::new(),
}
}
pub fn add_gate(&mut self, gate_name: &str, qubits: Vec<usize>, params: Vec<String>) {
self.gates.push((gate_name.to_string(), qubits, params));
}
pub fn num_parameters(&self) -> usize {
self.gates.iter().map(|(_, _, params)| params.len()).sum()
}
}