@turing-machine-js/library-binary-numbers 7.0.0-alpha.1 → 7.0.0-alpha.2

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.
Files changed (2) hide show
  1. package/package.json +3 -3
  2. package/states.md +94 -80
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@turing-machine-js/library-binary-numbers",
3
- "version": "7.0.0-alpha.1",
3
+ "version": "7.0.0-alpha.2",
4
4
  "description": "A standard library for working with binary numbers",
5
5
  "engines": {
6
6
  "npm": ">=7.0.0"
@@ -27,7 +27,7 @@
27
27
  "numbers"
28
28
  ],
29
29
  "peerDependencies": {
30
- "@turing-machine-js/machine": "^7.0.0-alpha.1"
30
+ "@turing-machine-js/machine": "^7.0.0-alpha.2"
31
31
  },
32
32
  "scripts": {
33
33
  "build": "tsc --build --verbose tsconfig.build.json && node ../../scripts/build-node-entries.mjs --package=@turing-machine-js/library-binary-numbers",
@@ -44,5 +44,5 @@
44
44
  "default": "./dist/index.mjs"
45
45
  }
46
46
  },
47
- "gitHead": "0d52695e614d12547ba73992c00cd48732b1e8c1"
47
+ "gitHead": "163c0f818365241bac2c2de5e489124056703d8b"
48
48
  }
package/states.md CHANGED
@@ -51,7 +51,7 @@ flowchart TD
51
51
 
52
52
  ## deleteNumber
53
53
 
54
- *4 states; 6 transitions; 1 wrapper (max nesting depth 1); has cycles*
54
+ *5 states; 6 transitions; 1 wrapper (max nesting depth 1); has cycles*
55
55
 
56
56
  ```mermaid
57
57
  flowchart TD
@@ -59,18 +59,21 @@ flowchart TD
59
59
  s0(((halt)))
60
60
  s6["deleteNumberInternal"]
61
61
  s8["deleteNumber"]
62
+ s7[["goToNumberStart(deleteNumberInternal)"]]
62
63
  idle([idle])
63
- subgraph w_7["halt frame"]
64
- s7[["goToNumberStart"]]
65
- c7(((halt)))
64
+ subgraph w_5["callable subtree of goToNumberStart"]
65
+ s5["goToNumberStart"]
66
+ c5(((halt)))
66
67
  end
67
68
  idle -. enter .-> s8
69
+ s7 == "call" ==> s5
70
+ w_5 -. "return" .-> s7
71
+ s7 --> s6
72
+ s5 -- "['^'] → [K]/[S]" --> c5
73
+ s5 -- "[*] → [K]/[L]" --> s5
68
74
  s6 -- "['$'] → [E]/[S]" --> s0
69
75
  s6 -- "[*] → [E]/[R]" --> s6
70
- s7 -- "['^'] → [K]/[S]" --> c7
71
- s7 -- "[*] → [K]/[L]" --> s7
72
- s7 -. onHalt .-> s6
73
- s8 == "['^']|['1']|['0']|['$'] → [K]/[S]" ==> s7
76
+ s8 -- "['^']|['1']|['0']|['$'] → [K]/[S]" --> s7
74
77
  s8 -- "[*] → [K]/[S]" --> s0
75
78
  ```
76
79
 
@@ -91,7 +94,7 @@ flowchart TD
91
94
 
92
95
  ## invertNumber
93
96
 
94
- *4 states; 8 transitions; 1 wrapper (max nesting depth 1); has cycles*
97
+ *5 states; 8 transitions; 1 wrapper (max nesting depth 1); has cycles*
95
98
 
96
99
  ```mermaid
97
100
  flowchart TD
@@ -99,26 +102,29 @@ flowchart TD
99
102
  s0(((halt)))
100
103
  s9["invertNumberGoToNumberWithInversion"]
101
104
  s11["invertNumber"]
105
+ s10[["goToNumberStart(invertNumberGoToNumberWithInversion)"]]
102
106
  idle([idle])
103
- subgraph w_10["halt frame"]
104
- s10[["goToNumberStart"]]
105
- c10(((halt)))
107
+ subgraph w_5["callable subtree of goToNumberStart"]
108
+ s5["goToNumberStart"]
109
+ c5(((halt)))
106
110
  end
107
111
  idle -. enter .-> s11
112
+ s10 == "call" ==> s5
113
+ w_5 -. "return" .-> s10
114
+ s10 --> s9
115
+ s5 -- "['^'] → [K]/[S]" --> c5
116
+ s5 -- "[*] → [K]/[L]" --> s5
108
117
  s9 -- "['^'] → [K]/[R]" --> s9
109
118
  s9 -- "['1'] → ['0']/[R]" --> s9
110
119
  s9 -- "['0'] → ['1']/[R]" --> s9
111
120
  s9 -- "['$'] → [K]/[S]" --> s0
112
- s10 -- "['^'] → [K]/[S]" --> c10
113
- s10 -- "[*] → [K]/[L]" --> s10
114
- s10 -. onHalt .-> s9
115
- s11 == "['^']|['1']|['0']|['$'] → [K]/[S]" ==> s10
121
+ s11 -- "['^']|['1']|['0']|['$'] → [K]/[S]" --> s10
116
122
  s11 -- "[*] → [K]/[S]" --> s0
117
123
  ```
118
124
 
119
125
  ## normalizeNumber
120
126
 
121
- *6 states; 9 transitions; 1 wrapper (max nesting depth 1); has cycles*
127
+ *7 states; 9 transitions; 1 wrapper (max nesting depth 1); has cycles*
122
128
 
123
129
  ```mermaid
124
130
  flowchart TD
@@ -128,21 +134,24 @@ flowchart TD
128
134
  s12["normalizeNumberPutNewStartSymbol"]
129
135
  s13["normalizeNumberMoveNumberStart"]
130
136
  s15["normalizeNumber"]
137
+ s14[["goToNumberStart(normalizeNumberMoveNumberStart)"]]
131
138
  idle([idle])
132
- subgraph w_14["halt frame"]
133
- s14[["goToNumberStart"]]
134
- c14(((halt)))
139
+ subgraph w_5["callable subtree of goToNumberStart"]
140
+ s5["goToNumberStart"]
141
+ c5(((halt)))
135
142
  end
136
143
  idle -. enter .-> s15
144
+ s14 == "call" ==> s5
145
+ w_5 -. "return" .-> s14
146
+ s14 --> s13
137
147
  s1 -- "['$'] → [K]/[S]" --> s0
138
148
  s1 -- "[*] → [K]/[R]" --> s1
149
+ s5 -- "['^'] → [K]/[S]" --> c5
150
+ s5 -- "[*] → [K]/[L]" --> s5
139
151
  s12 -- "[B] → ['^']/[S]" --> s1
140
152
  s13 -- "['^']|['0'] → [E]/[R]" --> s13
141
153
  s13 -- "['1']|['$'] → [K]/[L]" --> s12
142
- s14 -- "['^'] → [K]/[S]" --> c14
143
- s14 -- "[*] → [K]/[L]" --> s14
144
- s14 -. onHalt .-> s13
145
- s15 == "['^']|['1']|['0']|['$'] → [K]/[S]" ==> s14
154
+ s15 -- "['^']|['1']|['0']|['$'] → [K]/[S]" --> s14
146
155
  s15 -- "[*] → [K]/[S]" --> s0
147
156
  ```
148
157
 
@@ -174,7 +183,7 @@ flowchart TD
174
183
 
175
184
  ## minusOne
176
185
 
177
- *15 states; 32 transitions; 5 wrappers (max nesting depth 3); has cycles*
186
+ *18 states; 28 transitions; 5 wrappers (max nesting depth 3); has cycles*
178
187
 
179
188
  ```mermaid
180
189
  flowchart TD
@@ -185,74 +194,73 @@ flowchart TD
185
194
  s12["normalizeNumberPutNewStartSymbol"]
186
195
  s13["normalizeNumberMoveNumberStart"]
187
196
  s15["normalizeNumber"]
188
- s16["plusOneFillZeros"]
189
- s17["plusOneAddNumberStart"]
190
- s18["plusOneCaryOne"]
191
197
  s23["minusOne"]
198
+ s10[["goToNumberStart(invertNumberGoToNumberWithInversion)"]]
199
+ s14[["goToNumberStart(normalizeNumberMoveNumberStart)"]]
200
+ s20[["invertNumber(normalizeNumber)"]]
201
+ s21[["plusOne(invertNumber(normalizeNumber))"]]
202
+ s22[["invertNumber(plusOne(invertNumber(normalizeNumber)))"]]
192
203
  idle([idle])
193
- subgraph w_10["halt frame"]
194
- s10[["goToNumberStart"]]
195
- c10(((halt)))
196
- end
197
- subgraph w_14["halt frame"]
198
- s14[["goToNumberStart"]]
199
- c14(((halt)))
204
+ subgraph w_5["callable subtree of goToNumberStart"]
205
+ s5["goToNumberStart"]
206
+ c5(((halt)))
200
207
  end
201
- subgraph w_20["halt frame"]
202
- s20[["invertNumber"]]
203
- c20(((halt)))
208
+ subgraph w_11["callable subtree of invertNumber"]
209
+ s11["invertNumber"]
210
+ c11(((halt)))
204
211
  end
205
- subgraph w_21["halt frame"]
206
- s21[["plusOne"]]
207
- c21(((halt)))
208
- end
209
- subgraph w_22["halt frame"]
210
- s22[["invertNumber"]]
211
- c22(((halt)))
212
+ subgraph w_19["callable subtree of plusOne"]
213
+ s16["plusOneFillZeros"]
214
+ s17["plusOneAddNumberStart"]
215
+ s18["plusOneCaryOne"]
216
+ s19["plusOne"]
217
+ c19(((halt)))
212
218
  end
213
219
  idle -. enter .-> s23
220
+ s10 & s14 == "call" ==> s5
221
+ s20 & s22 == "call" ==> s11
222
+ s21 == "call" ==> s19
223
+ w_5 -. "return" .-> s10 & s14
224
+ w_11 -. "return" .-> s20 & s22
225
+ w_19 -. "return" .-> s21
226
+ s10 --> s9
227
+ s14 --> s13
228
+ s20 --> s15
229
+ s21 --> s20
230
+ s22 --> s21
214
231
  s1 -- "['$'] → [K]/[S]" --> s0
215
232
  s1 -- "[*] → [K]/[R]" --> s1
233
+ s5 -- "['^'] → [K]/[S]" --> c5
234
+ s5 -- "[*] → [K]/[L]" --> s5
216
235
  s9 -- "['^'] → [K]/[R]" --> s9
217
236
  s9 -- "['1'] → ['0']/[R]" --> s9
218
237
  s9 -- "['0'] → ['1']/[R]" --> s9
219
238
  s9 -- "['$'] → [K]/[S]" --> s0
220
- s10 -- "['^'] → [K]/[S]" --> c10
221
- s10 -- "[*] → [K]/[L]" --> s10
222
- s10 -. onHalt .-> s9
239
+ s11 -- "['^']|['1']|['0']|['$'] → [K]/[S]" --> s10
240
+ s11 -- "[*] → [K]/[S]" --> c11
223
241
  s12 -- "[B] → ['^']/[S]" --> s1
224
242
  s13 -- "['^']|['0'] → [E]/[R]" --> s13
225
243
  s13 -- "['1']|['$'] → [K]/[L]" --> s12
226
- s14 -- "['^'] → [K]/[S]" --> c14
227
- s14 -- "[*] → [K]/[L]" --> s14
228
- s14 -. onHalt .-> s13
229
- s15 == "['^']|['1']|['0']|['$'] → [K]/[S]" ==> s14
244
+ s15 -- "['^']|['1']|['0']|['$'] → [K]/[S]" --> s14
230
245
  s15 -- "[*] → [K]/[S]" --> s0
231
246
  s16 -- "['1'] → ['0']/[R]" --> s16
232
- s16 -- "['$'] → [K]/[S]" --> s0
247
+ s16 -- "['$'] → [K]/[S]" --> c19
233
248
  s17 -- "[B] → ['^']/[R]" --> s17
234
249
  s17 -- "['1'] → [K]/[R]" --> s16
235
250
  s18 -- "['0'] → ['1']/[R]" --> s16
236
251
  s18 -- "['1'] → [K]/[L]" --> s18
237
252
  s18 -- "['^'] → ['1']/[L]" --> s17
238
- s20 == "['^']|['1']|['0']|['$'] → [K]/[S]" ==> s10
239
- s20 -- "[*] → [K]/[S]" --> c20
240
- s20 -. onHalt .-> s15
241
- s21 -- "['^']|['1']|['0'] → [K]/[R]" --> s21
242
- s21 -- "['$'] → [K]/[L]" --> s18
243
- s21 -- "[*] → [K]/[S]" --> c21
244
- s21 -. onHalt .-> s20
245
- s22 == "['^']|['1']|['0']|['$'] → [K]/[S]" ==> s10
246
- s22 -- "[*] → [K]/[S]" --> c22
247
- s22 -. onHalt .-> s21
253
+ s19 -- "['^']|['1']|['0'] → [K]/[R]" --> s19
254
+ s19 -- "['$'] → [K]/[L]" --> s18
255
+ s19 -- "[*] [K]/[S]" --> c19
248
256
  s23 -- "['^']|['1']|['0'] → [K]/[R]" --> s23
249
- s23 == "['$'] → [K]/[S]" ==> s22
257
+ s23 -- "['$'] → [K]/[S]" --> s22
250
258
  s23 -- "[*] → [K]/[S]" --> s0
251
259
  ```
252
260
 
253
261
  ## minusOneFast
254
262
 
255
- *8 states; 15 transitions; 2 wrappers (max nesting depth 1); has cycles*
263
+ *10 states; 15 transitions; 2 wrappers (max nesting depth 1); has cycles*
256
264
 
257
265
  ```mermaid
258
266
  flowchart TD
@@ -263,31 +271,37 @@ flowchart TD
263
271
  s13["normalizeNumberMoveNumberStart"]
264
272
  s15["normalizeNumber"]
265
273
  s26["minusOneFast"]
274
+ s14[["goToNumberStart(normalizeNumberMoveNumberStart)"]]
275
+ s25[["minusOneFastBorrow(normalizeNumber)"]]
266
276
  idle([idle])
267
- subgraph w_14["halt frame"]
268
- s14[["goToNumberStart"]]
269
- c14(((halt)))
277
+ subgraph w_5["callable subtree of goToNumberStart"]
278
+ s5["goToNumberStart"]
279
+ c5(((halt)))
270
280
  end
271
- subgraph w_25["halt frame"]
272
- s25[["minusOneFastBorrow"]]
273
- c25(((halt)))
281
+ subgraph w_24["callable subtree of minusOneFastBorrow"]
282
+ s24["minusOneFastBorrow"]
283
+ c24(((halt)))
274
284
  end
275
285
  idle -. enter .-> s26
286
+ s14 == "call" ==> s5
287
+ s25 == "call" ==> s24
288
+ w_5 -. "return" .-> s14
289
+ w_24 -. "return" .-> s25
290
+ s14 --> s13
291
+ s25 --> s15
276
292
  s1 -- "['$'] → [K]/[S]" --> s0
277
293
  s1 -- "[*] → [K]/[R]" --> s1
294
+ s5 -- "['^'] → [K]/[S]" --> c5
295
+ s5 -- "[*] → [K]/[L]" --> s5
278
296
  s12 -- "[B] → ['^']/[S]" --> s1
279
297
  s13 -- "['^']|['0'] → [E]/[R]" --> s13
280
298
  s13 -- "['1']|['$'] → [K]/[L]" --> s12
281
- s14 -- "['^'] → [K]/[S]" --> c14
282
- s14 -- "[*] → [K]/[L]" --> s14
283
- s14 -. onHalt .-> s13
284
- s15 == "['^']|['1']|['0']|['$'] → [K]/[S]" ==> s14
299
+ s15 -- "['^']|['1']|['0']|['$'] → [K]/[S]" --> s14
285
300
  s15 -- "[*] → [K]/[S]" --> s0
286
- s25 -- "['1'] → ['0']/[S]" --> c25
287
- s25 -- "['0'] → ['1']/[L]" --> s25
288
- s25 -- "['^'] → [K]/[S]" --> c25
289
- s25 -. onHalt .-> s15
301
+ s24 -- "['1'] → ['0']/[S]" --> c24
302
+ s24 -- "['0'] → ['1']/[L]" --> s24
303
+ s24 -- "['^'] → [K]/[S]" --> c24
290
304
  s26 -- "['^']|['1']|['0'] → [K]/[R]" --> s26
291
- s26 == "['$'] → [K]/[L]" ==> s25
305
+ s26 -- "['$'] → [K]/[L]" --> s25
292
306
  s26 -- "[*] → [K]/[S]" --> s0
293
307
  ```