@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 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 Away the complex math. It uses "Second Quantization" and sparse amplitude dictionaries to allow you to easily attach quantum mechanics (superposition, entanglement, interference) directly to high-dimensional objects in your game (like an $(x,y)$ coordinate grid, a character's inventory, or a branching dialogue tree).
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 chess piece). It manages its own state, but if it becomes entangled, it defers mathematically to a joint system behind the scenes.
10
- * **`Operations`**: A suite of generalized quantum gates (Shift, Phase, Hadamard) that work on *qudits* of any dimension, not just qubits.
11
- * **`EntanglementEngine`**: A powerful manager that tracks interactions between different `QuantumEntity` objects. When entities interact conditionally (e.g., "IF player is on square 5, open the door"), their states become mathematically linked.
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 initial state index.
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 certain amount modulo the dimension.
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. Crucial for interference effects.
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(Math.PI));
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. SparseTransition**
53
- For complex game logic (like a "Quantum Split" move in Checkers), you can define a custom transition matrix. You only need to provide the non-zero mappings.
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
- const splitMove = Operations.SparseTransition([
56
- { from: 45, to: 54, amplitude: { re: 0.707, im: 0 } }, // 50% chance to move left
57
- { from: 45, to: 56, amplitude: { re: 0.707, im: 0 } } // 50% chance to move right
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(splitMove);
88
+ player.apply(customInterference);
60
89
  ```
61
90
 
62
91
  ---
63
92
 
64
93
  ## 2. Entanglement and Interactions
65
94
 
66
- The true power of the engine is the `EntanglementEngine`. In games, things interact. If a quantum player steps on a quantum button, they become entangled. Measuring one affects the other.
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
- Use `conditionalInteract` to apply operations to a `target` *only if* the `control` entity is in a specific state.
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 { EntanglementEngine } from 'quantum-game-engine';
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.Hadamard());
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
- // If the player is on square 6, they open the door.
80
- EntanglementEngine.conditionalInteract({
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 a universe where player is at 6, the door is Open (1).
87
- // - In a universe where player is at 5, the door is Closed (0).
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, you need to know the likelihood of an entity being in a certain state. Use `getProbabilities()` to get a classical probability distribution (0.0 to 1.0).
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: { '5': 0.5, '6': 0.5 }
138
+ // Returns sparse map: { 5: 0.5, 6: 0.5 }
101
139
 
102
- // If entangled, getProbabilities() automatically calculates the
103
- // marginal probabilities of just this entity from the joint system!
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
- **Advanced Physics: Reduced Density Matrices**
107
- If your game logic requires knowing whether an entity has "decohered" due to entanglement (losing its quantum interference capability), you can calculate its One-Body Reduced Density Matrix:
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] = Probability of state x
112
- // rho[x][y] = Coherence between state x and 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 exactly 5 or exactly 6.
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
- If `player` and `door` are entangled (as in the example above), measuring the `player` will **instantly collapse the `door` as well**.
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. This bypasses `Math.random()` entirely.
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(0); // Always collapses to state 0
197
+ const outcome = player.measure(6); // Always collapses player to state 6 (and door to 1)
134
198
  ```
135
199
 
136
- This works with entangled systems too — the forced outcome propagates through the joint system, collapsing entangled partners accordingly. Use this for:
137
- - **Game history replay** — reproduce recorded measurement outcomes exactly
138
- - **Undo/redo** — re-apply the same measurement results
139
- - **Testing** — verify specific branches without randomness
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** — zero overhead during normal gameplay.
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, interactMany, conditionalInteract, measure) ...
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` (for `apply`, `interactMany`, `conditionalInteract`) or a `MeasurementEntry` (for `measure`), tagged with entity IDs, dimensions, and an auto-incrementing timestamp.
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 guard for hot path |
164
- | `getLog()` | Get log copy while recording |
165
- | `getLogForEntities(ids)` | Filter by entity IDs |
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), used to identify entities in log entries.
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 joint system). The `EntanglementEngine` enforces a default limit of `8192` total joint dimensions to prevent out-of-memory issues or UI thread freezes. If this limit is exceeded, a `QuantumLimitExceeded` error is thrown.
173
-
174
- You can customize this limit using:
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
- JointQuantumSystem.setMaxDimensionLimit(16384); // Configure to custom limit
240
+ QuantumSystem.setMaxDimensionLimit(65536);
177
241
  ```
178
- We recommend designing your game's entanglement mechanics to trigger collapse frequently!
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:** You have a platformer game. The player (`playerX`) reaches a gap. They can press a "Quantum Jump" button to simultaneously jump *and* not jump, putting their position in a superposition. Later, they encounter a "Quantum Door" that only opens if the player is standing on a specific button.
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
- ```javascript
190
- import { QuantumEntity, Operations, EntanglementEngine } from 'quantum-game-engine';
252
+ ```typescript
253
+ import { QuantumEntity, Operations } from '@quantumplayed/quantum-game-engine';
191
254
 
192
- // 1. Initialize the player's X position as a qudit (e.g., 100 possible tiles)
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
- // The player hits the "Quantum Jump" button!
198
- // We want an equal 50/50 superposition of staying at 5 or jumping to 10.
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 (qudit: 0=Closed, 1=Open)
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 opens.
216
- EntanglementEngine.conditionalInteract({
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
- // We force a collapse of the player's position.
232
- const result = playerX.measure();
233
-
234
- // Let's say the engine rolled the 50% chance and returned '10'.
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 wants to move a piece from square 12. Instead of a normal move, they do a `SplitMove` to squares 16 and 17. Later, an opponent tries to take the piece on square 16.
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
- *Note: In Cheqqers, instead of tracking a "Piece" as a 32-dimension entity (First Quantization), it is much more natural to track each "Square" as a 2-dimension Qubit (Second Quantization), where `0 = Empty` and `1 = Occupied`.*
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
- ```javascript
249
- import { QuantumEntity, Operations, EntanglementEngine } from 'quantum-game-engine';
292
+ ```typescript
293
+ import { QuantumEntity, QuantumSystem, Operations } from '@quantumplayed/quantum-game-engine';
250
294
 
251
- // We represent squares as individual Qubits.
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
- // The "Quantum Chess Split" matrix is an 8x8 matrix that acts on 3 qubits
259
- // (From, To1, To2). Our engine provides a helper to apply this sparse sub-matrix.
260
- // Because it involves 3 entities, the EntanglementEngine automatically merges them
261
- // into an 8-dimension joint Hilbert space (2x2x2).
262
- EntanglementEngine.interactMany([sq12, sq16, sq17], Operations.SparseTransition([
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 now definitely Empty (|0>).
270
- // The system of (sq16 ⊗ sq17) is in a superposition:
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
- // In Cheqqers, time/turns applies a phase shift to superpositions.
277
- EntanglementEngine.conditionalInteract({
278
- controls: [sq16.is(1)],
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 moves a black piece from square 20 to square 12, capturing 16.
289
- const sq20 = new QuantumEntity({ dimension: 2, initialState: 1 }); // Black piece
290
-
291
- // The capture logic:
292
- // IF Black is on 20 (it is) AND White is on 16 (it's in superposition):
293
- // 1. Black moves to 12 (sq20 -> 0, sq12 -> 1)
294
- // 2. White is captured (sq16 -> 0)
295
- // This translates to a Toffoli (CCX) and CNOT (CX) sequence in quantum circuits.
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) }, // 1 -> 0 (wrapping)
301
- { entity: sq12, operation: Operations.Shift(1) }, // 0 -> 1
302
- { entity: sq16, operation: Operations.Shift(1) } // 1 -> 0 (captured)
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
- // The Joint Hilbert space now tracks the entangled state of shapes.
307
- // Branch A: (White was on 17).
308
- // sq16 resolves to 0. The capture condition fails! Black stays on 20.
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 Abstractions (The BoardGameHelpers Pattern)
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
- Here is the recommended pattern:
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, EntanglementEngine, Operations } from '@quantumplayed/quantum-game-engine';
345
+ import { QuantumEntity, QuantumSystem, Operations } from '@quantumplayed/quantum-game-engine';
326
346
 
327
347
  export class BoardGameHelpers {
328
348
  /**
329
- * Move a piece classically from source to target.
330
- * Transitions state |1, 0> (source occupied, target empty) to |0, 1>.
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
- const trans = [{ from: 2, to: 1, amplitude: { re: 1, im: 0 } }];
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 two target entities.
339
- * Ensure targets are cleared to state 0 (empty) first before calling.
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.amplitudes = { 0: { re: 1, im: 0 } };
343
- target1.entangledSystem = undefined;
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
- const trans = [
348
- { from: 4, to: 2, amplitude: { re: 0.70710678, im: 0 } }, // |1,0,0> -> |0,1,0>
349
- { from: 4, to: 1, amplitude: { re: 0.70710678, im: 0 } } // |1,0,0> -> |0,0,1>
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 entities back into a single target entity.
356
- * Handles positive/negative phases for constructive/destructive interference.
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: 0.70710678, im: 0 } }, // |1,0,0> -> |0,0,1>
361
- { from: 4, to: 6, amplitude: { re: 0.70710678, im: 0 } }, // |1,0,0> -> |1,1,0>
362
- { from: 2, to: 1, amplitude: { re: 0.70710678, im: 0 } }, // |0,1,0> -> |0,0,1>
363
- { from: 2, to: 6, amplitude: { re: -0.70710678, im: 0 } } // |0,1,0> -> -|1,1,0>
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
- EntanglementEngine.interactMany([source1, source2, target], Operations.SparseTransition(trans));
381
+ QuantumSystem.interact([source1, source2, target], Operations.SparseTransition(trans));
366
382
  }
367
383
 
368
384
  /**
369
- * Performs a conditional capture (Toffoli gate logic): if both attacker and victim are occupied,
370
- * the attacker moves to target and victim is captured (cleared to empty).
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): void {
373
- EntanglementEngine.conditionalInteract({
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 for multiple victims sequentially.
401
+ * Performs conditional captures across a chain of victims sequentially.
388
402
  */
389
- static captureMany(attacker: QuantumEntity, victims: QuantumEntity[], target: QuantumEntity): void {
390
- for (const victim of victims) {
391
- this.capture(attacker, victim, target);
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 Abstractions (The CardGameHelpers Pattern)
414
+ ## 7. Quantum Card Game Template (`CardGameHelpers`)
400
415
 
401
- For quantum card games (like Quantum Poker or Blackjack), cards can exist in a superposition of multiple ranks/suits until they are observed.
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, Operations, EntanglementEngine } from '@quantumplayed/quantum-game-engine';
419
+ import { QuantumEntity, QuantumSystem, Operations } from '@quantumplayed/quantum-game-engine';
407
420
 
408
421
  export class CardGameHelpers {
409
422
  /**
410
- * Shuffles a card qudit (dimension = number of ranks in deck)
411
- * into a uniform superposition of possible ranks.
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
- const factor = 1 / Math.sqrt(possibleRanks.length);
415
- const transitions = possibleRanks.map(rank => ({
416
- from: fromRank,
417
- to: rank,
418
- amplitude: { re: factor, im: 0 }
419
- }));
420
- card.apply(Operations.SparseTransition(transitions));
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 the deck to a player hand slot, entangling them.
425
- * Transitions card from |deck_occupied, hand_empty> to |deck_empty, hand_occupied>.
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
- // Assume 2-dimensional qudits (0=Empty/Card Gone, 1=Card Present)
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 & Item Systems (The InventoryHelpers Pattern)
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
- Here is the helper pattern:
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, Operations, EntanglementEngine } from '@quantumplayed/quantum-game-engine';
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 gathered (state 1) and chest is closed (state 0):
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): void {
454
- EntanglementEngine.conditionalInteract({
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) -> 1 (Obtained)
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 Trees (The NarrativeHelpers Pattern)
477
+ ## 9. Branching Quantum Narrative Template (`NarrativeHelpers`)
471
478
 
472
- In branching dialogue systems or RPG narrative questlines, the story can branch down multiple paths simultaneously. The state of the world remains in a superposition until a player observes a dialogue consequence.
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 dialog node into an equal superposition of two branching outcomes.
487
+ * from a root dialogue node into an equal superposition of branching outcomes.
483
488
  */
484
- static splitDecision(narrativeState: QuantumEntity, fromNode: number, branchANode: number, branchBNode: number): void {
485
- const trans = [
486
- { from: fromNode, to: branchANode, amplitude: { re: 0.70710678, im: 0 } },
487
- { from: fromNode, to: branchBNode, amplitude: { re: 0.70710678, im: 0 } }
488
- ];
489
- narrativeState.apply(Operations.SparseTransition(trans));
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
-
@@ -24,4 +24,5 @@ export declare const Operations: {
24
24
  weight: number;
25
25
  }[]): QuantumOperation;
26
26
  PhaseDegrees(degrees: number): QuantumOperation;
27
+ Rotate(stateA: number, stateB: number, theta: number): QuantumOperation;
27
28
  };
@@ -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
@@ -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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"}
@@ -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.
@@ -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":"AAAA,OAAO,EAAE,aAAa,EAAwC,MAAM,oBAAoB,CAAC;AAGzF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAwC,aAAa,EAAE,CAAC;AAE/D,MAAM,OAAO,aAAa;IACd,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAEX,EAAE,CAAS;IACpB,SAAS,CAAS;IAClB,MAAM,CAAgB;IAE7B,YAAY,OAAoD;QAC5D,IAAI,CAAC,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;IAED,0DAA0D;IAC1D,MAAM,CAAC,cAAc;QACjB,aAAa,CAAC,OAAO,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,CAAC;IAED,kDAAkD;IAClD,EAAE,CAAC,KAAa;QACZ,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,SAA2B,EAAE,QAAsB;QACrD,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO,aAAa,CAAC,mBAAmB,CAAC;gBACrC,QAAQ;gBACR,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;aACzC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACrC,IAAI,aAAa,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC9B,aAAa,CAAC,OAAO,CACjB,SAAS,CAAC,IAAI,EACd,CAAC,IAAI,CAAC,EAAE,CAAC,EACT,CAAC,IAAI,CAAC,SAAS,CAAC,EAChB,SAAS,CAAC,MAAM,CACnB,CAAC;YACN,CAAC;YACD,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAED,4CAA4C;IAC5C,kFAAkF;IAClF,OAAO,CAAC,aAAsB;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC1D,CAAC;IAED,0CAA0C;IAC1C,gBAAgB;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,sCAAsC;IACtC,gBAAgB,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,mEAAmE;IACnE,mBAAmB;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,iCAAiC;IACjC,aAAa;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,0CAA0C;IAC1C,gFAAgF;IAChF,uBAAuB;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC"}
1
+ {"version":3,"file":"QuantumEntity.js","sourceRoot":"","sources":["../src/QuantumEntity.ts"],"names":[],"mappings":"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"}
@@ -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>;
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quantumplayed/quantum-game-engine",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",