summaryrefslogtreecommitdiffhomepage
path: root/qsharp.html.markdown
diff options
context:
space:
mode:
authorAndrew Ryan Davis <AndrewDavis1191@gmail.com>2020-08-06 14:26:18 -0700
committerGitHub <noreply@github.com>2020-08-06 14:26:18 -0700
commit983a48226a7e03ab44e0f363593b000f242d7fe9 (patch)
treeaaf7b503b8fffb12f265a6a7ad9621238645661d /qsharp.html.markdown
parentceefb4adf521bed164122388a3121f262903b852 (diff)
Changing those comments back until a Q# formatter is available
Looks like using C# formatter, it can't accept the Q# multi-lines. Makes sense
Diffstat (limited to 'qsharp.html.markdown')
-rw-r--r--qsharp.html.markdown62
1 files changed, 32 insertions, 30 deletions
diff --git a/qsharp.html.markdown b/qsharp.html.markdown
index 409eac4a..16f7f96d 100644
--- a/qsharp.html.markdown
+++ b/qsharp.html.markdown
@@ -14,10 +14,12 @@ This is the new outline
```C#
// Single-line comments start with //
-/
+*//
Multi-line comments
like so
-\
+\*/
+
+// Note: Using C# multi-line around Q# because there doesn't appear to be a markdown formatter yet.
/////////////////////////////////////
// 1. Quantum data types and operators
@@ -42,19 +44,19 @@ using (qs = Qubit[2]) {
// You can apply multi-qubit gates to several qubits.
CNOT(qs[0], qs[1]);
- / You can also apply a controlled version of a gate:
- a gate that is applied if all control qubits are in |1⟩ state.
- \ The first argument is an array of control qubits, the second argument is the target qubit.
+ // You can also apply a controlled version of a gate:
+ // a gate that is applied if all control qubits are in |1⟩ state.
+ // The first argument is an array of control qubits, the second argument is the target qubit.
Controlled Y([qs[0]], qs[1]);
- / If you want to apply an anti-controlled gate
- (a gate that is applied if all control qubits are in |0⟩ state),
- \ you can use a library function.
+ // If you want to apply an anti-controlled gate
+ // (a gate that is applied if all control qubits are in |0⟩ state),
+ // you can use a library function.
ApplyControlledOnInt(0, X, [qs[0]], qs[1]);
- / To read the information from the quantum system, you use measurements.
- Measurements return a value of Result data type: Zero or One.
- \ You can print measurement results as a classical value.
+ // To read the information from the quantum system, you use measurements.
+ // Measurements return a value of Result data type: Zero or One.
+ // You can print measurement results as a classical value.
Message($"Measured {M(qs[0])}, {M(qs[1])}");
}
@@ -91,9 +93,9 @@ let x = 10 == 15; // is false
// Range is a sequence of integers and can be defined like: start..step..stop
let xi = 1..2..7; // Gives the sequence 1,3,5,7
-/ Assigning new value to a variable:
- by default all Q# variables are immutable;
-\ if the variable was defined using let, you cannot reassign its value.
+// Assigning new value to a variable:
+// by default all Q# variables are immutable;
+// if the variable was defined using let, you cannot reassign its value.
// When you want to make a variable mutable, you have to declare it as such,
// and use the set word to update value
@@ -139,10 +141,10 @@ while (index < 10) {
set index += 1;
}
-/ Quantum equivalent of a while loop is a repeat-until-success loop.
- Because of the probabilistic nature of quantum computing sometimes
- you want to repeat a certain sequence of operations
-\ until a specific condition is achieved; you can use this loop to express this.
+// Quantum equivalent of a while loop is a repeat-until-success loop.
+// Because of the probabilistic nature of quantum computing sometimes
+// you want to repeat a certain sequence of operations
+// until a specific condition is achieved; you can use this loop to express this.
repeat {
// Your operation here
}
@@ -160,10 +162,10 @@ operation ApplyXGate(source : Qubit) : Unit {
X(source);
}
-/ If the operation implements a unitary transformation, you can define
- adjoint and controlled variants of it.
- The easiest way to do that is to add "is Adj + Ctl" after Unit.
-\ This will tell the compiler to generate the variants automatically.
+// If the operation implements a unitary transformation, you can define
+// adjoint and controlled variants of it.
+// The easiest way to do that is to add "is Adj + Ctl" after Unit.
+// This will tell the compiler to generate the variants automatically.
operation ApplyXGateCA (source : Qubit) : Unit is Adj + Ctl {
X(source);
}
@@ -183,16 +185,16 @@ operation XGateDemo() : Unit {
// We will generate a classical array of random bits using quantum code.
@EntryPoint()
operation QRNGDemo() : Unit {
- mutable bits = new Int[5]; / Array we'll use to store bits
- using (q = Qubit()) { / Allocate a qubit
- for (i in 0 .. 4) { / Generate each bit independently
- H(q); / Apply Hadamard gate prepares equal superposition
- let result = M(q); / Measure the qubit to get 0 or 1 with 50/50 prob
- let bit = result == Zero ? 0 | 1; / Convert measurement result to an integer
- set bits w/= i <- bit; / Write generated bit to an array
+ mutable bits = new Int[5]; // Array we'll use to store bits
+ using (q = Qubit()) { // Allocate a qubit
+ for (i in 0 .. 4) { // Generate each bit independently
+ H(q); // Apply Hadamard gate prepares equal superposition
+ let result = M(q); // Measure the qubit to get 0 or 1 with 50/50 prob
+ let bit = result == Zero ? 0 | 1; // Convert measurement result to an integer
+ set bits w/= i <- bit; // Write generated bit to an array
}
}
- Message($"{bits}"); / Print the result
+ Message($"{bits}"); // Print the result
}
```