blob: ad551ae6adafaf819ec3c777ab10bedfacf271db (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
/*
NOTE(Hachem): This is what I would like the output to be like
┌───┐ ┌───────┐ ┌─────────┐
|q0>: ─────┤ H ├────┤ C-NOT ├────┤ MEASURE ├───────────────────▓
└───┘ └───┬───┘ └────┬────┘
│ │ ┌─────────┐
|q1>: ──────────────────■─────────────┼─────────┤ MEASURE ├────▓
│ └────┬────┘
│ │
c0: ════════════════════════════════■══════════════╪═════════▓
c1: ═══════════════════════════════════════════════■═════════▓
*/
use crate::Visualizer;
use libpsi_core::QuantumCircuit;
pub struct HorizontalCLIVisualizer<'a> {
circuit: &'a QuantumCircuit,
}
impl<'a> Visualizer<'a> for HorizontalCLIVisualizer<'a> {
fn new(circuit: &'a QuantumCircuit) -> HorizontalCLIVisualizer<'a> {
HorizontalCLIVisualizer { circuit }
}
// NOTE(Hachem): This is a temporary function
fn render(&self) {
for instruction in self.circuit.get_instructions() {
print!("Applied {} on ", &instruction.gate.0);
for bit_index in instruction.control_indices {
print!("q{} ", bit_index);
}
for bit_index in instruction.target_indices {
print!("q{} ", bit_index);
}
println!();
}
}
}
|