From d298390cb66768486fc48019901603a8d4162021 Mon Sep 17 00:00:00 2001 From: Vasily Vasinov Date: Mon, 30 Sep 2019 12:47:19 -0600 Subject: [PATCH] Move `withRegister` init logic to `QubitRegister` --- src/main/scala/scotty/quantum/Circuit.scala | 5 ++--- src/main/scala/scotty/quantum/Register.scala | 8 +++++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/scala/scotty/quantum/Circuit.scala b/src/main/scala/scotty/quantum/Circuit.scala index 6a26d86..f203299 100644 --- a/src/main/scala/scotty/quantum/Circuit.scala +++ b/src/main/scala/scotty/quantum/Circuit.scala @@ -10,10 +10,9 @@ case class Circuit(register: QubitRegister, ops: Op*) { def combine(newOps: Op*): Circuit = Circuit(ops ++ newOps: _*) - def withRegister(newRegister: String): Circuit = - Circuit(QubitRegister(newRegister.toCharArray.map(c => Qubit(Bit(c.asDigit))): _*), ops: _*) + def withRegister(newRegister: String): Circuit = Circuit(QubitRegister(newRegister), ops: _*) - def withRegister(newRegister: Int): Circuit = withRegister(newRegister.toBinaryString) + def withRegister(newRegister: Int): Circuit = withRegister(QubitRegister(newRegister)) def withRegister(newRegister: QubitRegister): Circuit = Circuit(newRegister, ops: _*) diff --git a/src/main/scala/scotty/quantum/Register.scala b/src/main/scala/scotty/quantum/Register.scala index 1778a1e..4e7533b 100644 --- a/src/main/scala/scotty/quantum/Register.scala +++ b/src/main/scala/scotty/quantum/Register.scala @@ -16,6 +16,12 @@ sealed trait Register[T <: Labeled[String]] { require(areLabelsUnique, ErrorMessage.RegisterLabelsNotUnique) } +case class BitRegister(values: Bit*) extends Register[Bit] + case class QubitRegister(values: Qubit*) extends Register[Qubit] -case class BitRegister(values: Bit*) extends Register[Bit] \ No newline at end of file +object QubitRegister { + def apply(r: String): QubitRegister = this(r.toCharArray.map(c => Qubit(Bit(c.asDigit))): _*) + + def apply(r: Int): QubitRegister = this(r.toBinaryString) +} \ No newline at end of file