Skip to content

Commit

Permalink
Move withRegister init logic to QubitRegister
Browse files Browse the repository at this point in the history
  • Loading branch information
vasinov committed Sep 30, 2019
1 parent c8ddf8f commit d298390
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
5 changes: 2 additions & 3 deletions src/main/scala/scotty/quantum/Circuit.scala
Original file line number Diff line number Diff line change
Expand Up @@ -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: _*)

Expand Down
8 changes: 7 additions & 1 deletion src/main/scala/scotty/quantum/Register.scala
Original file line number Diff line number Diff line change
Expand Up @@ -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]
object QubitRegister {
def apply(r: String): QubitRegister = this(r.toCharArray.map(c => Qubit(Bit(c.asDigit))): _*)

def apply(r: Int): QubitRegister = this(r.toBinaryString)
}

0 comments on commit d298390

Please sign in to comment.