@quantumplayed/quantum-game-engine 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +251 -240
- package/dist/Operations.d.ts +1 -0
- package/dist/Operations.js +38 -0
- package/dist/Operations.js.map +1 -1
- package/dist/QuantumEntity.d.ts +9 -0
- package/dist/QuantumEntity.js +14 -0
- package/dist/QuantumEntity.js.map +1 -1
- package/dist/QuantumSystem.d.ts +7 -0
- package/dist/QuantumSystem.js +23 -0
- package/dist/QuantumSystem.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
# Quantum Game Engine
|
|
2
2
|
|
|
3
|
-
A generalized, sparse-matrix quantum simulation library designed specifically for game developers.
|
|
3
|
+
A generalized, sparse-matrix quantum simulation library designed specifically for game developers.
|
|
4
4
|
|
|
5
|
-
Unlike traditional quantum SDKs (like Qiskit or Cirq) that focus on low-level circuit design and dense matrices, this engine abstracts
|
|
5
|
+
Unlike traditional quantum SDKs (like Qiskit or Cirq) that focus on low-level circuit design and dense matrices, this engine abstracts away the complex math. It uses sparse amplitude maps and pure numeric radix indexing to let you attach quantum mechanics (superposition, entanglement, interference) directly to high-dimensional objects in your game—such as an $(x,y)$ coordinate grid, board squares, a character's inventory, or a branching dialogue tree.
|
|
6
6
|
|
|
7
7
|
## Core Concepts
|
|
8
8
|
|
|
9
|
-
* **`QuantumEntity`**: Represents any quantum object in your game (a player, a coin, a
|
|
10
|
-
* **`
|
|
11
|
-
* **`
|
|
9
|
+
* **`QuantumEntity`**: Represents any quantum object in your game (a player, a coin, a board square, a card). It composes a `QuantumSystem` (`entity.system`) under the hood, seamlessly delegating local or entangled operations without losing state.
|
|
10
|
+
* **`QuantumSystem`**: The unified state container for $N \ge 1$ entities. Standalone entities start in a 1-entity system; when multiple entities interact via `QuantumSystem.interact` or `QuantumSystem.conditionalInteract`, their systems automatically merge into a composite Hilbert space.
|
|
11
|
+
* **`Operations`**: A suite of generalized quantum gates (`Shift`, `Phase`, `PhaseDegrees`, `Hadamard`, `Split`, `Branch`, `Rotate`, `SqrtSwap`, `SparseTransition`) that work on *qudits* of any dimension, not just qubits.
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
15
15
|
## 1. Creating and Modifying Entities
|
|
16
16
|
|
|
17
|
-
A `QuantumEntity` requires a `dimension` (how many possible classical states it can have) and an
|
|
17
|
+
A `QuantumEntity` requires a `dimension` (how many possible classical states it can have) and an `initialState` index ($0 \dots \text{dimension}-1$).
|
|
18
18
|
|
|
19
19
|
```typescript
|
|
20
|
-
import { QuantumEntity, Operations } from 'quantum-game-engine';
|
|
20
|
+
import { QuantumEntity, Operations } from '@quantumplayed/quantum-game-engine';
|
|
21
21
|
|
|
22
22
|
// A coin has dimension 2 (Heads=0, Tails=1)
|
|
23
23
|
const coin = new QuantumEntity({ dimension: 2, initialState: 0 });
|
|
@@ -31,152 +31,215 @@ const player = new QuantumEntity({ dimension: 100, initialState: 45 });
|
|
|
31
31
|
You can mutate the state of an entity using `apply()`.
|
|
32
32
|
|
|
33
33
|
**1. Shift (Generalized Pauli-X / Clock)**
|
|
34
|
-
Shifts the classical state by a
|
|
34
|
+
Shifts the classical state by a given amount modulo the dimension.
|
|
35
35
|
```typescript
|
|
36
36
|
player.apply(Operations.Shift(1)); // Moves player from 45 to 46
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
**2. Phase (Generalized Pauli-Z)**
|
|
40
|
-
Applies a phase rotation to the state
|
|
39
|
+
**2. Phase & PhaseDegrees (Generalized Pauli-Z)**
|
|
40
|
+
Applies a phase rotation to the state—crucial for constructive and destructive interference.
|
|
41
41
|
```typescript
|
|
42
|
-
coin.apply(Operations.Phase(
|
|
42
|
+
coin.apply(Operations.Phase(1)); // Multiplier of 2π / dimension
|
|
43
|
+
coin.apply(Operations.PhaseDegrees(180)); // Explicit phase angle in degrees
|
|
43
44
|
```
|
|
44
45
|
|
|
45
46
|
**3. Hadamard (Quantum Fourier Transform)**
|
|
46
47
|
Puts the entity into a uniform superposition of all its possible states.
|
|
47
48
|
```typescript
|
|
48
|
-
coin.apply(Operations.Hadamard());
|
|
49
|
-
// Coin is now 50% Heads, 50% Tails
|
|
49
|
+
coin.apply(Operations.Hadamard());
|
|
50
|
+
// Coin is now 50% Heads (0), 50% Tails (1)
|
|
50
51
|
```
|
|
51
52
|
|
|
52
|
-
**4.
|
|
53
|
-
|
|
53
|
+
**4. Split (Equal Superposition Across Target States)**
|
|
54
|
+
Splits a specific starting state equally ($1/\sqrt{N}$) across any subset of target states—without needing to compute amplitudes manually.
|
|
54
55
|
```typescript
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
// Player at tile 45 splits equally between moving left (44) and right (46)
|
|
57
|
+
player.apply(Operations.Split(45, [44, 46]));
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**5. Branch (Weighted Superposition)**
|
|
61
|
+
Branches a starting state into target states using relative probability weights (automatically normalized to unit amplitudes $\sqrt{w_i / \sum w}$).
|
|
62
|
+
```typescript
|
|
63
|
+
// 25% chance to land on tile 44, 75% chance to land on tile 46
|
|
64
|
+
player.apply(Operations.Branch(45, [
|
|
65
|
+
{ to: 44, weight: 1 },
|
|
66
|
+
{ to: 46, weight: 3 }
|
|
67
|
+
]));
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**6. Rotate (Continuous 2-Level Unitary Rotation)**
|
|
71
|
+
Performs a smooth, reversible Givens rotation between any two basis states by angle $\theta$ (in radians):
|
|
72
|
+
$|a\rangle \to \cos\theta\,|a\rangle + \sin\theta\,|b\rangle$ and $|b\rangle \to -\sin\theta\,|a\rangle + \cos\theta\,|b\rangle$. Ideal for continuous parameter sweeps, fractional splits, and wave interference.
|
|
73
|
+
```typescript
|
|
74
|
+
// Smoothly rotate 50% of amplitude from state 0 into state 1 (θ = π/4)
|
|
75
|
+
coin.apply(Operations.Rotate(0, 1, Math.PI / 4));
|
|
76
|
+
|
|
77
|
+
// Applying it a second time interferes constructively/destructively to reach 100% state 1!
|
|
78
|
+
coin.apply(Operations.Rotate(0, 1, Math.PI / 4));
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**7. SparseTransition & SqrtSwap**
|
|
82
|
+
For custom unitary transitions (including negative/complex phases for interference), define only the non-zero transitions with `SparseTransition`, or use `SqrtSwap()` on two equal-dimension entities:
|
|
83
|
+
```typescript
|
|
84
|
+
const customInterference = Operations.SparseTransition([
|
|
85
|
+
{ from: 45, to: 54, amplitude: { re: Math.SQRT1_2, im: 0 } },
|
|
86
|
+
{ from: 45, to: 56, amplitude: { re: -Math.SQRT1_2, im: 0 } }
|
|
58
87
|
]);
|
|
59
|
-
player.apply(
|
|
88
|
+
player.apply(customInterference);
|
|
60
89
|
```
|
|
61
90
|
|
|
62
91
|
---
|
|
63
92
|
|
|
64
93
|
## 2. Entanglement and Interactions
|
|
65
94
|
|
|
66
|
-
|
|
95
|
+
In games, objects interact. If a quantum player steps on a quantum button, they become entangled: measuring one affects the other.
|
|
67
96
|
|
|
68
|
-
|
|
97
|
+
You can trigger conditional interactions either directly on an entity via `entity.apply(operation, controls)` or across multiple targets via `QuantumSystem.conditionalInteract`.
|
|
69
98
|
|
|
70
99
|
```typescript
|
|
71
|
-
import {
|
|
100
|
+
import { QuantumEntity, QuantumSystem, Operations } from '@quantumplayed/quantum-game-engine';
|
|
72
101
|
|
|
73
102
|
const player = new QuantumEntity({ dimension: 10, initialState: 5 });
|
|
74
103
|
const door = new QuantumEntity({ dimension: 2, initialState: 0 }); // 0=Closed, 1=Open
|
|
75
104
|
|
|
76
|
-
// Player steps left and right at the same time
|
|
77
|
-
player.apply(Operations.
|
|
105
|
+
// Player steps left (5) and right (6) at the same time
|
|
106
|
+
player.apply(Operations.Split(5, [5, 6]));
|
|
107
|
+
|
|
108
|
+
// Shorthand: IF player is on square 6, shift door by 1 (Open)
|
|
109
|
+
door.apply(Operations.Shift(1), [player.is(6)]);
|
|
78
110
|
|
|
79
|
-
//
|
|
80
|
-
|
|
111
|
+
// Or using QuantumSystem.conditionalInteract for multiple controls and targets:
|
|
112
|
+
QuantumSystem.conditionalInteract({
|
|
81
113
|
controls: [player.is(6)],
|
|
82
114
|
targets: [{ entity: door, operation: Operations.Shift(1) }]
|
|
83
115
|
});
|
|
84
116
|
|
|
85
|
-
// The Player and the Door are now ENTANGLED.
|
|
86
|
-
// - In
|
|
87
|
-
// - In
|
|
117
|
+
// The Player and the Door are now ENTANGLED in a shared QuantumSystem (player.system === door.system).
|
|
118
|
+
// - In the branch where player is at 6, the door is Open (1).
|
|
119
|
+
// - In the branch where player is at 5, the door is Closed (0).
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
For multi-entity joint gates (such as swapping or splitting occupation across several squares), use `QuantumSystem.interact`:
|
|
123
|
+
|
|
124
|
+
```typescript
|
|
125
|
+
QuantumSystem.interact([sqA, sqB], Operations.SqrtSwap());
|
|
88
126
|
```
|
|
89
127
|
|
|
90
128
|
---
|
|
91
129
|
|
|
92
130
|
## 3. Observation and Rendering
|
|
93
131
|
|
|
94
|
-
### Extracting Probabilities (For UI)
|
|
132
|
+
### Extracting Probabilities and Amplitudes (For UI)
|
|
95
133
|
|
|
96
|
-
To render the game to the screen,
|
|
134
|
+
To render the game to the screen, query probabilities or amplitudes directly on the entity or its `QuantumSystem`:
|
|
97
135
|
|
|
98
136
|
```typescript
|
|
99
137
|
const probs = player.getProbabilities();
|
|
100
|
-
// Returns: {
|
|
138
|
+
// Returns sparse map: { 5: 0.5, 6: 0.5 }
|
|
101
139
|
|
|
102
|
-
|
|
103
|
-
|
|
140
|
+
const p6 = player.getProbabilityOf(6); // 0.5
|
|
141
|
+
|
|
142
|
+
const probArray = door.getProbabilityArray();
|
|
143
|
+
// Returns dense fixed-length array: [0.5, 0.5]
|
|
144
|
+
|
|
145
|
+
const amps = player.amplitudes;
|
|
146
|
+
// Always returns valid complex amplitudes (marginal branch amplitudes when entangled)
|
|
147
|
+
|
|
148
|
+
// Directly encode/inject custom amplitudes in-place (auto-normalized by default):
|
|
149
|
+
player.setAmplitudes({
|
|
150
|
+
5: { re: 1, im: 0 },
|
|
151
|
+
6: { re: 1, im: 0 }
|
|
152
|
+
});
|
|
104
153
|
```
|
|
105
154
|
|
|
106
|
-
|
|
107
|
-
|
|
155
|
+
### Joint System Queries
|
|
156
|
+
|
|
157
|
+
When entities are entangled in a `QuantumSystem`, you can also inspect joint probabilities or check if conditions are mutually exclusive:
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
const system = player.system;
|
|
161
|
+
|
|
162
|
+
// Probability that player is at 6 AND door is Open (1)
|
|
163
|
+
const jointProb = system.getJointProbability([player.is(6), door.is(1)]); // 0.5
|
|
164
|
+
|
|
165
|
+
// Check if player at 6 with a Closed door (0) is impossible
|
|
166
|
+
const impossible = system.areMutuallyExclusive([player.is(6), door.is(0)]); // true
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Advanced Physics: Reduced Density Matrices
|
|
170
|
+
|
|
171
|
+
If your game logic needs to know whether an entity has "decohered" due to entanglement (losing its ability to interfere with itself), calculate its One-Body Reduced Density Matrix:
|
|
172
|
+
|
|
108
173
|
```typescript
|
|
109
174
|
const rho = player.getReducedDensityMatrix();
|
|
110
|
-
// Returns a 2D map of Complex numbers
|
|
111
|
-
// rho[x][x] =
|
|
112
|
-
// rho[x][y] =
|
|
175
|
+
// Returns a 2D map of Complex numbers:
|
|
176
|
+
// rho[x][x] = Classical probability of state x
|
|
177
|
+
// rho[x][y] = Quantum coherence between state x and state y
|
|
113
178
|
```
|
|
114
179
|
|
|
115
180
|
### Measuring (Collapsing the Wavefunction)
|
|
116
181
|
|
|
117
|
-
When gameplay requires an entity to commit to a single reality (e.g., an enemy attacks the player, forcing them to be in one specific location), use `measure()
|
|
182
|
+
When gameplay requires an entity to commit to a single reality (e.g., an enemy attacks the player, forcing them to be in one specific location), use `measure()`:
|
|
118
183
|
|
|
119
184
|
```typescript
|
|
120
|
-
const finalPosition = player.measure();
|
|
121
|
-
// Returns
|
|
185
|
+
const finalPosition = player.measure();
|
|
186
|
+
// Returns 5 or 6 with 50% probability each.
|
|
122
187
|
```
|
|
123
188
|
|
|
124
189
|
**The Magic of Entanglement:**
|
|
125
|
-
|
|
126
|
-
If `player.measure()` returns `6`, any subsequent call to `door.measure()` is mathematically guaranteed to return `1` (Open).
|
|
190
|
+
Because `player` and `door` share a `QuantumSystem`, measuring `player` **instantly collapses `door` as well**. If `player.measure()` returns `6`, any subsequent check on `door` is guaranteed to find it in state `1` (Open).
|
|
127
191
|
|
|
128
|
-
### Forced Measurements (Deterministic Replay)
|
|
192
|
+
### Forced Measurements (Deterministic Replay & Rollback)
|
|
129
193
|
|
|
130
|
-
Pass an optional `forcedOutcome` to `measure()` to force a specific collapse state
|
|
194
|
+
Pass an optional `forcedOutcome` to `measure(forcedOutcome)` to force a specific collapse state, bypassing `Math.random()` entirely:
|
|
131
195
|
|
|
132
196
|
```typescript
|
|
133
|
-
const outcome = player.measure(
|
|
197
|
+
const outcome = player.measure(6); // Always collapses player to state 6 (and door to 1)
|
|
134
198
|
```
|
|
135
199
|
|
|
136
|
-
|
|
137
|
-
- **
|
|
138
|
-
- **Undo/
|
|
139
|
-
- **
|
|
200
|
+
Use this for:
|
|
201
|
+
- **Deterministic multiplayer / lockstep netcode** — seed or replay exact outcomes across clients
|
|
202
|
+
- **Undo / Redo & Time Travel** — replay recorded action logs deterministically
|
|
203
|
+
- **Unit testing** — assert exact gameplay branches without randomness
|
|
140
204
|
|
|
141
205
|
---
|
|
142
206
|
|
|
143
207
|
## 4. Circuit Logging
|
|
144
208
|
|
|
145
|
-
The engine includes a toggleable `CircuitLogger` that records every state-mutating operation as an append-only log. Recording is **off by default**
|
|
209
|
+
The engine includes a toggleable `CircuitLogger` that records every state-mutating operation (`apply`, `QuantumSystem.interact`, `QuantumSystem.conditionalInteract`, `measure`) as an append-only log. Recording is **off by default** for zero runtime overhead during normal gameplay.
|
|
146
210
|
|
|
147
211
|
```typescript
|
|
148
|
-
import { CircuitLogger } from 'quantum-game-engine';
|
|
212
|
+
import { CircuitLogger } from '@quantumplayed/quantum-game-engine';
|
|
149
213
|
|
|
150
214
|
CircuitLogger.startRecording();
|
|
151
215
|
|
|
152
|
-
// ... game operations (apply,
|
|
216
|
+
// ... game operations (apply, interact, conditionalInteract, measure) ...
|
|
153
217
|
|
|
154
218
|
const log = CircuitLogger.stopRecording(); // CircuitEntry[]
|
|
155
219
|
```
|
|
156
220
|
|
|
157
|
-
Each entry is either a `GateEntry`
|
|
221
|
+
Each entry is either a `GateEntry` or a `MeasurementEntry`, tagged with entity IDs, dimensions, parameters, controls, and a sequence timestamp.
|
|
158
222
|
|
|
159
223
|
| Method | Description |
|
|
160
224
|
|---|---|
|
|
161
|
-
| `startRecording()` | Begin recording (resets log) |
|
|
162
|
-
| `stopRecording()` | Stop and return `CircuitEntry[]` |
|
|
163
|
-
| `isRecording()` | Fast
|
|
164
|
-
| `getLog()` | Get
|
|
165
|
-
| `getLogForEntities(ids)` | Filter
|
|
166
|
-
| `reset()` | Clear log and counter |
|
|
225
|
+
| `startRecording()` | Begin recording (resets existing log) |
|
|
226
|
+
| `stopRecording()` | Stop recording and return `CircuitEntry[]` |
|
|
227
|
+
| `isRecording()` | Fast boolean check on the hot path |
|
|
228
|
+
| `getLog()` | Get a copy of the current log while recording |
|
|
229
|
+
| `getLogForEntities(ids)` | Filter log entries involving specific entity IDs |
|
|
230
|
+
| `reset()` | Clear log and reset timestamp counter |
|
|
167
231
|
|
|
168
|
-
Every `QuantumEntity` has a unique readonly `id: number` (auto-incrementing
|
|
232
|
+
Every `QuantumEntity` and `QuantumSystem` has a unique readonly `id: number` (auto-incrementing; resettable in tests via `QuantumEntity.resetIdCounter()` and `QuantumSystem.resetIdCounter()`).
|
|
169
233
|
|
|
170
234
|
## Engine Boundaries and Limitations
|
|
171
235
|
|
|
172
|
-
* **Joint Dimension Limit:** When entities entangle, their state spaces multiply (a dimension-10 player interacting with a dimension-10 enemy creates a dimension-100
|
|
173
|
-
|
|
174
|
-
You can
|
|
236
|
+
* **Joint Dimension Limit:** When entities entangle, their state spaces multiply (a dimension-10 player interacting with a dimension-10 enemy creates a dimension-100 composite `QuantumSystem`). To prevent accidental memory exhaustion, `QuantumSystem` enforces a default maximum dimension limit of `32768`. Exceeding this throws a `QuantumLimitExceeded` error.
|
|
237
|
+
|
|
238
|
+
You can configure this limit via:
|
|
175
239
|
```typescript
|
|
176
|
-
|
|
240
|
+
QuantumSystem.setMaxDimensionLimit(65536);
|
|
177
241
|
```
|
|
178
|
-
We recommend designing your game's entanglement mechanics to trigger collapse
|
|
179
|
-
|
|
242
|
+
We recommend designing your game's entanglement mechanics to trigger measurements (collapse) periodically when chains of interactions grow large.
|
|
180
243
|
|
|
181
244
|
---
|
|
182
245
|
|
|
@@ -184,197 +247,148 @@ Every `QuantumEntity` has a unique readonly `id: number` (auto-incrementing), us
|
|
|
184
247
|
|
|
185
248
|
### Example 1: A Quantum Platformer (Schrödinger's Jump)
|
|
186
249
|
|
|
187
|
-
**The Scenario:**
|
|
250
|
+
**The Scenario:** In a platformer game, the player (`playerX`) reaches a gap. Pressing the "Quantum Jump" button puts their position into a superposition of staying on tile 5 and landing on tile 10 across the gap. Tile 10 has a pressure plate that opens a Quantum Door.
|
|
188
251
|
|
|
189
|
-
```
|
|
190
|
-
import { QuantumEntity, Operations
|
|
252
|
+
```typescript
|
|
253
|
+
import { QuantumEntity, Operations } from '@quantumplayed/quantum-game-engine';
|
|
191
254
|
|
|
192
|
-
// 1. Initialize the player's X position as a qudit (
|
|
193
|
-
// We start purely classical: 100% chance of being at tile 5.
|
|
255
|
+
// 1. Initialize the player's X position as a qudit (100 possible tiles, starting at tile 5)
|
|
194
256
|
const playerX = new QuantumEntity({ dimension: 100, initialState: 5 });
|
|
195
257
|
|
|
196
258
|
// --- THE QUANTUM JUMP ---
|
|
197
|
-
//
|
|
198
|
-
|
|
199
|
-
// We apply a custom sparse unitary operation (a basic split/Hadamard variant).
|
|
200
|
-
const jumpOp = Operations.SparseTransition([
|
|
201
|
-
{ from: 5, to: 5, amplitude: { re: 0.707, im: 0 } }, // Branch A: didn't jump
|
|
202
|
-
{ from: 5, to: 10, amplitude: { re: 0.707, im: 0 } } // Branch B: did jump
|
|
203
|
-
]);
|
|
204
|
-
|
|
205
|
-
playerX.apply(jumpOp);
|
|
206
|
-
|
|
207
|
-
// playerX.amplitudes is now roughly:
|
|
208
|
-
// { 5: {re: 0.707, im: 0}, 10: {re: 0.707, im: 0} }
|
|
259
|
+
// Split tile 5 into an equal 50/50 superposition of tile 5 (stayed) and tile 10 (jumped)
|
|
260
|
+
playerX.apply(Operations.Split(5, [5, 10]));
|
|
209
261
|
|
|
262
|
+
// playerX.getProbabilities() is now: { 5: 0.5, 10: 0.5 }
|
|
210
263
|
|
|
211
264
|
// --- ENTANGLEMENT ---
|
|
212
|
-
// A Quantum Door (
|
|
265
|
+
// A Quantum Door (0=Closed, 1=Open)
|
|
213
266
|
const door = new QuantumEntity({ dimension: 2, initialState: 0 });
|
|
214
267
|
|
|
215
|
-
// If the player landed on the button at tile 10, the door
|
|
216
|
-
|
|
217
|
-
controls: [playerX.is(10)],
|
|
218
|
-
targets: [{ entity: door, operation: Operations.Shift(1) }]
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
// Since playerX was in superposition, the Door is now entangled!
|
|
222
|
-
// The joint amplitudes (PlayerX ⊗ Door):
|
|
223
|
-
// {
|
|
224
|
-
// "5,0": {re: 0.707, im: 0}, // Player at 5, Door is Closed
|
|
225
|
-
// "10,1": {re: 0.707, im: 0} // Player at 10, Door is Open
|
|
226
|
-
// }
|
|
268
|
+
// If the player landed on the button at tile 10, open the door
|
|
269
|
+
door.apply(Operations.Shift(1), [playerX.is(10)]);
|
|
227
270
|
|
|
271
|
+
// Since playerX was in superposition, playerX and door are now entangled!
|
|
272
|
+
// Composite states in playerX.system (dimension 100 * 2 = 200):
|
|
273
|
+
// - |5, 0> (index 10): Player at 5, Door is Closed (50%)
|
|
274
|
+
// - |10, 1> (index 21): Player at 10, Door is Open (50%)
|
|
228
275
|
|
|
229
276
|
// --- MEASUREMENT / COLLAPSE ---
|
|
230
|
-
// The player walks into a "Camera / Observation Zone"
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
//
|
|
235
|
-
// Because of the Entanglement Engine, the Door's state automatically
|
|
236
|
-
// collapses to '1' (Open)! The universe branch where the player didn't
|
|
237
|
-
// jump is pruned (amplitudes deleted).
|
|
277
|
+
// The player walks into a "Camera / Observation Zone", forcing a collapse
|
|
278
|
+
const landedTile = playerX.measure();
|
|
279
|
+
|
|
280
|
+
// If landedTile === 10, door.getProbabilityOf(1) is now 1.0 (Open)!
|
|
281
|
+
// If landedTile === 5, door.getProbabilityOf(0) is now 1.0 (Closed)!
|
|
238
282
|
```
|
|
239
283
|
|
|
240
284
|
---
|
|
241
285
|
|
|
242
286
|
### Example 2: Quantum Checkers (Squares as Qubits)
|
|
243
287
|
|
|
244
|
-
**The Scenario:** A player
|
|
288
|
+
**The Scenario:** A player moves a piece from square 12 by doing a `Split` move onto squares 16 and 17. Later, an opponent attempts to jump and capture the piece on square 16.
|
|
245
289
|
|
|
246
|
-
*
|
|
290
|
+
*Tip: In board games like Quantum Checkers, tracking each square as a 2-dimension qubit (`0 = Empty`, `1 = Occupied`) makes split moves, merges, and conditional captures clean and composable.*
|
|
247
291
|
|
|
248
|
-
```
|
|
249
|
-
import { QuantumEntity,
|
|
292
|
+
```typescript
|
|
293
|
+
import { QuantumEntity, QuantumSystem, Operations } from '@quantumplayed/quantum-game-engine';
|
|
250
294
|
|
|
251
|
-
//
|
|
252
|
-
// Initial state: Square 12 is Occupied (1), Squares 16 and 17 are Empty (0).
|
|
295
|
+
// Squares as individual qubits: sq12 is Occupied (1), sq16 and sq17 are Empty (0)
|
|
253
296
|
const sq12 = new QuantumEntity({ dimension: 2, initialState: 1 });
|
|
254
297
|
const sq16 = new QuantumEntity({ dimension: 2, initialState: 0 });
|
|
255
298
|
const sq17 = new QuantumEntity({ dimension: 2, initialState: 0 });
|
|
256
299
|
|
|
257
300
|
// --- THE SPLIT MOVE ---
|
|
258
|
-
//
|
|
259
|
-
// (
|
|
260
|
-
//
|
|
261
|
-
//
|
|
262
|
-
|
|
263
|
-
// Binary 100 (state 4) -> 010 (state 2) + 001 (state 1)
|
|
264
|
-
{ from: 4, to: 2, amplitude: { re: 0.707, im: 0 } },
|
|
265
|
-
{ from: 4, to: 1, amplitude: { re: 0.707, im: 0 } }
|
|
266
|
-
]));
|
|
301
|
+
// In the 3-qubit space [sq12, sq16, sq17] (dimension 2x2x2 = 8):
|
|
302
|
+
// Binary 100 (state 4: sq12=1, sq16=0, sq17=0) splits equally into:
|
|
303
|
+
// - Binary 010 (state 2: sq12=0, sq16=1, sq17=0)
|
|
304
|
+
// - Binary 001 (state 1: sq12=0, sq16=0, sq17=1)
|
|
305
|
+
QuantumSystem.interact([sq12, sq16, sq17], Operations.Split(4, [2, 1]));
|
|
267
306
|
|
|
268
307
|
// After the split:
|
|
269
|
-
// sq12 is
|
|
270
|
-
//
|
|
271
|
-
// 50% chance of |1, 0> (Piece is on 16)
|
|
272
|
-
// 50% chance of |0, 1> (Piece is on 17)
|
|
273
|
-
|
|
308
|
+
// - sq12 is definitely Empty (0)
|
|
309
|
+
// - sq16 and sq17 are entangled: 50% |1, 0> and 50% |0, 1>
|
|
274
310
|
|
|
275
311
|
// --- THE PASSAGE OF TIME (PHASE) ---
|
|
276
|
-
//
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
targets: [{ entity: sq16, operation: Operations.Phase(Math.PI / 4) }]
|
|
280
|
-
});
|
|
281
|
-
EntanglementEngine.conditionalInteract({
|
|
282
|
-
controls: [sq17.is(1)],
|
|
283
|
-
targets: [{ entity: sq17, operation: Operations.Phase(Math.PI / 4) }]
|
|
284
|
-
});
|
|
285
|
-
|
|
312
|
+
// Apply a 45-degree phase rotation to occupied branches
|
|
313
|
+
sq16.apply(Operations.PhaseDegrees(45));
|
|
314
|
+
sq17.apply(Operations.PhaseDegrees(45));
|
|
286
315
|
|
|
287
316
|
// --- CONDITIONAL CAPTURE (ENTANGLEMENT) ---
|
|
288
|
-
// Opponent
|
|
289
|
-
const sq20 = new QuantumEntity({ dimension: 2, initialState: 1 });
|
|
290
|
-
|
|
291
|
-
//
|
|
292
|
-
//
|
|
293
|
-
//
|
|
294
|
-
//
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
EntanglementEngine.conditionalInteract({
|
|
317
|
+
// Opponent has a piece on sq20 (Occupied = 1) and jumps over sq16 to land on sq12.
|
|
318
|
+
const sq20 = new QuantumEntity({ dimension: 2, initialState: 1 });
|
|
319
|
+
|
|
320
|
+
// IF sq20 is occupied (1) AND sq16 is occupied (1):
|
|
321
|
+
// 1. Opponent leaves sq20 (1 -> 0)
|
|
322
|
+
// 2. Opponent lands on sq12 (0 -> 1)
|
|
323
|
+
// 3. Victim on sq16 is captured (1 -> 0)
|
|
324
|
+
QuantumSystem.conditionalInteract({
|
|
298
325
|
controls: [sq20.is(1), sq16.is(1)],
|
|
299
326
|
targets: [
|
|
300
|
-
{ entity: sq20, operation: Operations.Shift(1) },
|
|
301
|
-
{ entity: sq12, operation: Operations.Shift(1) },
|
|
302
|
-
{ entity: sq16, operation: Operations.Shift(1) }
|
|
327
|
+
{ entity: sq20, operation: Operations.Shift(1) },
|
|
328
|
+
{ entity: sq12, operation: Operations.Shift(1) },
|
|
329
|
+
{ entity: sq16, operation: Operations.Shift(1) }
|
|
303
330
|
]
|
|
304
331
|
});
|
|
305
332
|
|
|
306
|
-
//
|
|
307
|
-
// Branch A
|
|
308
|
-
//
|
|
309
|
-
// Branch B: (White was on 16).
|
|
310
|
-
// sq16 resolves to 1. Capture fires! Black moves to 12, sq16 flips to 0.
|
|
311
|
-
|
|
312
|
-
// Because everything is sparse, branches where mathematically invalid things happen
|
|
313
|
-
// (like trying to capture an empty square) don't consume memory.
|
|
333
|
+
// Now the system has two coherent reality branches:
|
|
334
|
+
// - Branch A (White was on 17): Capture condition failed; Black stays on 20, White is on 17.
|
|
335
|
+
// - Branch B (White was on 16): Capture succeeded; Black is now on 12, White is captured!
|
|
314
336
|
```
|
|
315
337
|
|
|
316
338
|
---
|
|
317
339
|
|
|
318
|
-
## 6. Higher-Level Board Game
|
|
319
|
-
|
|
320
|
-
For board games (like Checkers or Chess), you can wrap low-level transitions and complex amplitudes into an intuitive, custom helper class within your project. This keeps your game rules code clean and accessible to non-quantum experts.
|
|
340
|
+
## 6. Higher-Level Board Game Template (`BoardGameHelpers`)
|
|
321
341
|
|
|
322
|
-
|
|
342
|
+
For board games (like Checkers or Chess), you can wrap multi-square transitions into a reusable helper class so your game rules stay readable and domain-focused:
|
|
323
343
|
|
|
324
344
|
```typescript
|
|
325
|
-
import { QuantumEntity,
|
|
345
|
+
import { QuantumEntity, QuantumSystem, Operations } from '@quantumplayed/quantum-game-engine';
|
|
326
346
|
|
|
327
347
|
export class BoardGameHelpers {
|
|
328
348
|
/**
|
|
329
|
-
* Move a piece
|
|
330
|
-
*
|
|
349
|
+
* Move a piece from source to target.
|
|
350
|
+
* In the 2-qubit space [source, target], state |1,0> (2) transitions to |0,1> (1).
|
|
331
351
|
*/
|
|
332
352
|
static move(source: QuantumEntity, target: QuantumEntity): void {
|
|
333
|
-
|
|
334
|
-
EntanglementEngine.interactMany([source, target], Operations.SparseTransition(trans));
|
|
353
|
+
QuantumSystem.interact([source, target], Operations.Split(2, [1]));
|
|
335
354
|
}
|
|
336
355
|
|
|
337
356
|
/**
|
|
338
|
-
* Splits a piece equally into a superposition across
|
|
339
|
-
*
|
|
357
|
+
* Splits a piece from source equally into a superposition across target1 and target2.
|
|
358
|
+
* If targets are currently in superposition, measures them first to ensure they are empty (0).
|
|
340
359
|
*/
|
|
341
360
|
static split(source: QuantumEntity, target1: QuantumEntity, target2: QuantumEntity): void {
|
|
342
|
-
target1.
|
|
343
|
-
|
|
344
|
-
target2.amplitudes = { 0: { re: 1, im: 0 } };
|
|
345
|
-
target2.entangledSystem = undefined;
|
|
361
|
+
if (target1.getProbabilityOf(0) < 1) target1.measure(0);
|
|
362
|
+
if (target2.getProbabilityOf(0) < 1) target2.measure(0);
|
|
346
363
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
];
|
|
351
|
-
EntanglementEngine.interactMany([source, target1, target2], Operations.SparseTransition(trans));
|
|
364
|
+
// In 3-qubit space [source, target1, target2]:
|
|
365
|
+
// |1,0,0> (4) -> (|0,1,0> (2) + |0,0,1> (1)) / √2
|
|
366
|
+
QuantumSystem.interact([source, target1, target2], Operations.Split(4, [2, 1]));
|
|
352
367
|
}
|
|
353
368
|
|
|
354
369
|
/**
|
|
355
|
-
* Merges a split piece from two source
|
|
356
|
-
* Handles
|
|
370
|
+
* Merges a split piece from two source squares back into a single target square.
|
|
371
|
+
* Handles constructive/destructive interference via +/- amplitudes.
|
|
357
372
|
*/
|
|
358
373
|
static merge(source1: QuantumEntity, source2: QuantumEntity, target: QuantumEntity): void {
|
|
374
|
+
const invSqrt2 = Math.SQRT1_2;
|
|
359
375
|
const trans = [
|
|
360
|
-
{ from: 4, to: 1, amplitude: { re:
|
|
361
|
-
{ from: 4, to: 6, amplitude: { re:
|
|
362
|
-
{ from: 2, to: 1, amplitude: { re:
|
|
363
|
-
{ from: 2, to: 6, amplitude: { re: -
|
|
376
|
+
{ from: 4, to: 1, amplitude: { re: invSqrt2, im: 0 } }, // |1,0,0> -> |0,0,1>
|
|
377
|
+
{ from: 4, to: 6, amplitude: { re: invSqrt2, im: 0 } }, // |1,0,0> -> |1,1,0>
|
|
378
|
+
{ from: 2, to: 1, amplitude: { re: invSqrt2, im: 0 } }, // |0,1,0> -> |0,0,1>
|
|
379
|
+
{ from: 2, to: 6, amplitude: { re: -invSqrt2, im: 0 } } // |0,1,0> -> -|1,1,0>
|
|
364
380
|
];
|
|
365
|
-
|
|
381
|
+
QuantumSystem.interact([source1, source2, target], Operations.SparseTransition(trans));
|
|
366
382
|
}
|
|
367
383
|
|
|
368
384
|
/**
|
|
369
|
-
* Performs a conditional capture (Toffoli gate
|
|
370
|
-
*
|
|
385
|
+
* Performs a conditional capture (Toffoli-style gate):
|
|
386
|
+
* IF attacker is occupied (1) AND victim is occupied (1) AND target is empty (0),
|
|
387
|
+
* attacker moves to target and victim is cleared to empty.
|
|
371
388
|
*/
|
|
372
|
-
static capture(attacker: QuantumEntity, victim: QuantumEntity, target: QuantumEntity):
|
|
373
|
-
|
|
374
|
-
controls: [
|
|
375
|
-
{ entity: attacker, state: 1 },
|
|
376
|
-
{ entity: victim, state: 1 }
|
|
377
|
-
],
|
|
389
|
+
static capture(attacker: QuantumEntity, victim: QuantumEntity, target: QuantumEntity): QuantumSystem {
|
|
390
|
+
return QuantumSystem.conditionalInteract({
|
|
391
|
+
controls: [attacker.is(1), victim.is(1), target.is(0)],
|
|
378
392
|
targets: [
|
|
379
393
|
{ entity: attacker, operation: Operations.Shift(1) },
|
|
380
394
|
{ entity: target, operation: Operations.Shift(1) },
|
|
@@ -384,11 +398,12 @@ export class BoardGameHelpers {
|
|
|
384
398
|
}
|
|
385
399
|
|
|
386
400
|
/**
|
|
387
|
-
* Performs conditional captures
|
|
401
|
+
* Performs conditional captures across a chain of victims sequentially.
|
|
388
402
|
*/
|
|
389
|
-
static captureMany(attacker: QuantumEntity, victims: QuantumEntity[],
|
|
390
|
-
for (
|
|
391
|
-
|
|
403
|
+
static captureMany(attacker: QuantumEntity, victims: QuantumEntity[], landingSquares: QuantumEntity[]): void {
|
|
404
|
+
for (let i = 0; i < victims.length; i++) {
|
|
405
|
+
const fromSquare = i === 0 ? attacker : landingSquares[i - 1];
|
|
406
|
+
this.capture(fromSquare, victims[i], landingSquares[i]);
|
|
392
407
|
}
|
|
393
408
|
}
|
|
394
409
|
}
|
|
@@ -396,69 +411,61 @@ export class BoardGameHelpers {
|
|
|
396
411
|
|
|
397
412
|
---
|
|
398
413
|
|
|
399
|
-
## 7. Quantum Card
|
|
414
|
+
## 7. Quantum Card Game Template (`CardGameHelpers`)
|
|
400
415
|
|
|
401
|
-
For quantum card games (like Quantum Poker or Blackjack), cards can exist in
|
|
402
|
-
|
|
403
|
-
Here is the helper pattern:
|
|
416
|
+
For quantum card games (like Quantum Poker or Blackjack), cards can exist in uniform or weighted superpositions of ranks/suits until observed, and dealing cards entangles the deck with player hands:
|
|
404
417
|
|
|
405
418
|
```typescript
|
|
406
|
-
import { QuantumEntity,
|
|
419
|
+
import { QuantumEntity, QuantumSystem, Operations } from '@quantumplayed/quantum-game-engine';
|
|
407
420
|
|
|
408
421
|
export class CardGameHelpers {
|
|
409
422
|
/**
|
|
410
|
-
*
|
|
411
|
-
* into
|
|
423
|
+
* Places a card qudit (dimension = number of ranks in deck)
|
|
424
|
+
* into an equal superposition of the given possible ranks.
|
|
412
425
|
*/
|
|
413
426
|
static shuffleSuperposition(card: QuantumEntity, fromRank: number, possibleRanks: number[]): void {
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
427
|
+
card.apply(Operations.Split(fromRank, possibleRanks));
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* Places a card qudit into a weighted superposition (e.g., biased deck / draw odds).
|
|
432
|
+
*/
|
|
433
|
+
static weightedDraw(card: QuantumEntity, fromRank: number, odds: { to: number; weight: number }[]): void {
|
|
434
|
+
card.apply(Operations.Branch(fromRank, odds));
|
|
421
435
|
}
|
|
422
436
|
|
|
423
437
|
/**
|
|
424
|
-
* Deals a card from
|
|
425
|
-
* Transitions
|
|
438
|
+
* Deals a card from a deck slot to a hand slot, entangling them.
|
|
439
|
+
* Transitions |deck_occupied, hand_empty> (state 2) to |deck_empty, hand_occupied> (state 1).
|
|
426
440
|
*/
|
|
427
441
|
static dealCard(deckSlot: QuantumEntity, handSlot: QuantumEntity): void {
|
|
428
|
-
|
|
429
|
-
const trans = [{ from: 2, to: 1, amplitude: { re: 1, im: 0 } }]; // |1,0> -> |0,1>
|
|
430
|
-
EntanglementEngine.interactMany([deckSlot, handSlot], Operations.SparseTransition(trans));
|
|
442
|
+
QuantumSystem.interact([deckSlot, handSlot], Operations.Split(2, [1]));
|
|
431
443
|
}
|
|
432
444
|
}
|
|
433
445
|
```
|
|
434
446
|
|
|
435
447
|
---
|
|
436
448
|
|
|
437
|
-
## 8. Quantum Inventory &
|
|
438
|
-
|
|
439
|
-
In adventure games or RPGs, you can entangle chest contents or puzzles with player inventory state. If a player obtains a key in a superposition branch, the chest status becomes entangled with that reality branch.
|
|
449
|
+
## 8. Quantum Inventory & Loot Template (`InventoryHelpers`)
|
|
440
450
|
|
|
441
|
-
|
|
451
|
+
In adventure games or RPGs, you can entangle chest contents or puzzle locks with a player's quantum inventory:
|
|
442
452
|
|
|
443
453
|
```typescript
|
|
444
|
-
import { QuantumEntity,
|
|
454
|
+
import { QuantumEntity, QuantumSystem, Operations } from '@quantumplayed/quantum-game-engine';
|
|
445
455
|
|
|
446
456
|
export class InventoryHelpers {
|
|
447
457
|
/**
|
|
448
458
|
* Entangles a chest and its reward with a key in the player's inventory.
|
|
449
|
-
* IF the key is
|
|
459
|
+
* IF the key is held (state 1) and the chest is closed (state 0):
|
|
450
460
|
* 1. Chest transitions to Open (state 1)
|
|
451
461
|
* 2. Reward item transitions to Obtained (state 1)
|
|
452
462
|
*/
|
|
453
|
-
static entangleReward(key: QuantumEntity, chest: QuantumEntity, rewardItem: QuantumEntity):
|
|
454
|
-
|
|
455
|
-
controls: [
|
|
456
|
-
{ entity: key, state: 1 },
|
|
457
|
-
{ entity: chest, state: 0 }
|
|
458
|
-
],
|
|
463
|
+
static entangleReward(key: QuantumEntity, chest: QuantumEntity, rewardItem: QuantumEntity): QuantumSystem {
|
|
464
|
+
return QuantumSystem.conditionalInteract({
|
|
465
|
+
controls: [key.is(1), chest.is(0)],
|
|
459
466
|
targets: [
|
|
460
467
|
{ entity: chest, operation: Operations.Shift(1) }, // 0 (Closed) -> 1 (Open)
|
|
461
|
-
{ entity: rewardItem, operation: Operations.Shift(1) } // 0 (None)
|
|
468
|
+
{ entity: rewardItem, operation: Operations.Shift(1) } // 0 (None) -> 1 (Obtained)
|
|
462
469
|
]
|
|
463
470
|
});
|
|
464
471
|
}
|
|
@@ -467,11 +474,9 @@ export class InventoryHelpers {
|
|
|
467
474
|
|
|
468
475
|
---
|
|
469
476
|
|
|
470
|
-
## 9. Branching Quantum Narrative
|
|
477
|
+
## 9. Branching Quantum Narrative Template (`NarrativeHelpers`)
|
|
471
478
|
|
|
472
|
-
In branching dialogue systems or
|
|
473
|
-
|
|
474
|
-
Here is the helper pattern:
|
|
479
|
+
In branching dialogue systems or detective RPGs, the story can branch down multiple paths simultaneously (either equally or weighted by character traits), remaining in superposition until a consequence is observed:
|
|
475
480
|
|
|
476
481
|
```typescript
|
|
477
482
|
import { QuantumEntity, Operations } from '@quantumplayed/quantum-game-engine';
|
|
@@ -479,15 +484,21 @@ import { QuantumEntity, Operations } from '@quantumplayed/quantum-game-engine';
|
|
|
479
484
|
export class NarrativeHelpers {
|
|
480
485
|
/**
|
|
481
486
|
* Splits the narrative state (dimension = number of quest state nodes)
|
|
482
|
-
* from a root
|
|
487
|
+
* from a root dialogue node into an equal superposition of branching outcomes.
|
|
483
488
|
*/
|
|
484
|
-
static splitDecision(narrativeState: QuantumEntity, fromNode: number,
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
489
|
+
static splitDecision(narrativeState: QuantumEntity, fromNode: number, branchNodes: number[]): void {
|
|
490
|
+
narrativeState.apply(Operations.Split(fromNode, branchNodes));
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
/**
|
|
494
|
+
* Branches the narrative state with weighted probabilities based on player stats or choices.
|
|
495
|
+
*/
|
|
496
|
+
static weightedDecision(
|
|
497
|
+
narrativeState: QuantumEntity,
|
|
498
|
+
fromNode: number,
|
|
499
|
+
outcomes: { to: number; weight: number }[]
|
|
500
|
+
): void {
|
|
501
|
+
narrativeState.apply(Operations.Branch(fromNode, outcomes));
|
|
490
502
|
}
|
|
491
503
|
}
|
|
492
504
|
```
|
|
493
|
-
|
package/dist/Operations.d.ts
CHANGED
package/dist/Operations.js
CHANGED
|
@@ -200,6 +200,44 @@ export const Operations = {
|
|
|
200
200
|
return cleanAmplitudes(newAmps);
|
|
201
201
|
}
|
|
202
202
|
};
|
|
203
|
+
},
|
|
204
|
+
// Continuous 2-level unitary rotation (Givens / Ry-style rotation) between two basis states:
|
|
205
|
+
// |stateA⟩ -> cos(theta)|stateA⟩ + sin(theta)|stateB⟩
|
|
206
|
+
// |stateB⟩ -> -sin(theta)|stateA⟩ + cos(theta)|stateB⟩
|
|
207
|
+
// Composable, reversible, and accounts for constructive/destructive interference.
|
|
208
|
+
Rotate(stateA, stateB, theta) {
|
|
209
|
+
if (stateA === stateB) {
|
|
210
|
+
throw new Error("Rotate requires two distinct basis states.");
|
|
211
|
+
}
|
|
212
|
+
return {
|
|
213
|
+
name: "Rotate",
|
|
214
|
+
params: { stateA, stateB, theta },
|
|
215
|
+
apply(amplitudes, _dimension) {
|
|
216
|
+
const cosT = Math.cos(theta);
|
|
217
|
+
const sinT = Math.sin(theta);
|
|
218
|
+
const newAmps = {};
|
|
219
|
+
for (const key in amplitudes) {
|
|
220
|
+
const k = parseInt(key);
|
|
221
|
+
const amp = amplitudes[key];
|
|
222
|
+
if (k === stateA) {
|
|
223
|
+
const termA = ComplexMath.scale(amp, cosT);
|
|
224
|
+
const termB = ComplexMath.scale(amp, sinT);
|
|
225
|
+
newAmps[stateA] = ComplexMath.add(newAmps[stateA] ?? { re: 0, im: 0 }, termA);
|
|
226
|
+
newAmps[stateB] = ComplexMath.add(newAmps[stateB] ?? { re: 0, im: 0 }, termB);
|
|
227
|
+
}
|
|
228
|
+
else if (k === stateB) {
|
|
229
|
+
const termA = ComplexMath.scale(amp, -sinT);
|
|
230
|
+
const termB = ComplexMath.scale(amp, cosT);
|
|
231
|
+
newAmps[stateA] = ComplexMath.add(newAmps[stateA] ?? { re: 0, im: 0 }, termA);
|
|
232
|
+
newAmps[stateB] = ComplexMath.add(newAmps[stateB] ?? { re: 0, im: 0 }, termB);
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
newAmps[k] = ComplexMath.add(newAmps[k] ?? { re: 0, im: 0 }, amp);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return cleanAmplitudes(newAmps);
|
|
239
|
+
}
|
|
240
|
+
};
|
|
203
241
|
}
|
|
204
242
|
};
|
|
205
243
|
//# sourceMappingURL=Operations.js.map
|
package/dist/Operations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Operations.js","sourceRoot":"","sources":["../src/Operations.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Operations.js","sourceRoot":"","sources":["../src/Operations.ts"],"names":[],"mappings":"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"}
|
package/dist/QuantumEntity.d.ts
CHANGED
|
@@ -18,6 +18,15 @@ export declare class QuantumEntity {
|
|
|
18
18
|
* When entangled, returns the marginal branch amplitudes.
|
|
19
19
|
*/
|
|
20
20
|
get amplitudes(): Record<number, Complex>;
|
|
21
|
+
set amplitudes(amps: Record<number, Complex>);
|
|
22
|
+
/**
|
|
23
|
+
* Set the amplitudes for this entity in-place.
|
|
24
|
+
* If the entity was previously entangled with other entities, it detaches into a standalone 1-entity system.
|
|
25
|
+
* By default, normalizes the amplitude vector so total probability equals 1.0.
|
|
26
|
+
*/
|
|
27
|
+
setAmplitudes(amplitudes: Record<number, Complex>, options?: {
|
|
28
|
+
normalize?: boolean;
|
|
29
|
+
}): void;
|
|
21
30
|
/**
|
|
22
31
|
* Backwards-compatible handle to the entangled system.
|
|
23
32
|
* Returns the joint system if entangled with other entities, otherwise undefined.
|
package/dist/QuantumEntity.js
CHANGED
|
@@ -22,6 +22,20 @@ export class QuantumEntity {
|
|
|
22
22
|
get amplitudes() {
|
|
23
23
|
return this.getAmplitudes();
|
|
24
24
|
}
|
|
25
|
+
set amplitudes(amps) {
|
|
26
|
+
this.setAmplitudes(amps, { normalize: false });
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Set the amplitudes for this entity in-place.
|
|
30
|
+
* If the entity was previously entangled with other entities, it detaches into a standalone 1-entity system.
|
|
31
|
+
* By default, normalizes the amplitude vector so total probability equals 1.0.
|
|
32
|
+
*/
|
|
33
|
+
setAmplitudes(amplitudes, options) {
|
|
34
|
+
if (this.system.entities.length > 1) {
|
|
35
|
+
this.system = new QuantumSystem([this], 0);
|
|
36
|
+
}
|
|
37
|
+
this.system.setAmplitudes(amplitudes, options);
|
|
38
|
+
}
|
|
25
39
|
/**
|
|
26
40
|
* Backwards-compatible handle to the entangled system.
|
|
27
41
|
* Returns the joint system if entangled with other entities, otherwise undefined.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuantumEntity.js","sourceRoot":"","sources":["../src/QuantumEntity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QuantumEntity.js","sourceRoot":"","sources":["../src/QuantumEntity.ts"],"names":[],"mappings":"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"}
|
package/dist/QuantumSystem.d.ts
CHANGED
|
@@ -30,6 +30,13 @@ export declare class QuantumSystem {
|
|
|
30
30
|
getProbabilityOf(state: number): number;
|
|
31
31
|
getProbabilityArray(): number[];
|
|
32
32
|
getAmplitudes(): Record<number, Complex>;
|
|
33
|
+
/**
|
|
34
|
+
* Set the amplitudes of this system in-place.
|
|
35
|
+
* By default, normalizes the amplitude vector so total probability equals 1.0.
|
|
36
|
+
*/
|
|
37
|
+
setAmplitudes(amplitudes: SparseAmplitudes, options?: {
|
|
38
|
+
normalize?: boolean;
|
|
39
|
+
}): void;
|
|
33
40
|
getEntityProbabilities(targetEntity: QuantumEntity): Record<number, number>;
|
|
34
41
|
getTargetProbabilities(targetEntity: QuantumEntity): Record<number, number>;
|
|
35
42
|
getEntityAmplitudes(targetEntity: QuantumEntity): Record<number, Complex>;
|
package/dist/QuantumSystem.js
CHANGED
|
@@ -116,6 +116,29 @@ export class QuantumSystem {
|
|
|
116
116
|
}
|
|
117
117
|
return amps;
|
|
118
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* Set the amplitudes of this system in-place.
|
|
121
|
+
* By default, normalizes the amplitude vector so total probability equals 1.0.
|
|
122
|
+
*/
|
|
123
|
+
setAmplitudes(amplitudes, options) {
|
|
124
|
+
const shouldNormalize = options?.normalize ?? true;
|
|
125
|
+
const nextAmps = {};
|
|
126
|
+
let totalProb = 0;
|
|
127
|
+
for (const [kStr, amp] of Object.entries(amplitudes)) {
|
|
128
|
+
const k = parseInt(kStr);
|
|
129
|
+
if (k >= 0 && k < this.dimension) {
|
|
130
|
+
nextAmps[k] = { re: amp.re, im: amp.im };
|
|
131
|
+
totalProb += amp.re * amp.re + amp.im * amp.im;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (shouldNormalize && totalProb > 1e-12 && Math.abs(totalProb - 1.0) > 1e-12) {
|
|
135
|
+
const scale = 1.0 / Math.sqrt(totalProb);
|
|
136
|
+
for (const k in nextAmps) {
|
|
137
|
+
nextAmps[k] = ComplexMath.scale(nextAmps[k], scale);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
this.amplitudes = cleanAmplitudes(nextAmps);
|
|
141
|
+
}
|
|
119
142
|
getEntityProbabilities(targetEntity) {
|
|
120
143
|
const targetIndex = this.entities.indexOf(targetEntity);
|
|
121
144
|
if (targetIndex === -1)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuantumSystem.js","sourceRoot":"","sources":["../src/QuantumSystem.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QuantumSystem.js","sourceRoot":"","sources":["../src/QuantumSystem.ts"],"names":[],"mappings":"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"}
|