Implementacion algoritmo de GROVER en python

Estoy intentando implementar el siguiente circuito cuántico mediante python sin la herramienta qiskit, pero no consigo ningun resultado coherente.

He calculado la puerta H, X, la Z doble controlada y el oraculo de manera independiente. Es decir, tengo diversas matrices 8×8, pero no tengo claro como combinarlas.

Gracias de antemano,
Un saludo.

Circuito Grover