-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patharray-bisort.pd
More file actions
452 lines (452 loc) · 11.1 KB
/
array-bisort.pd
File metadata and controls
452 lines (452 loc) · 11.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
#N canvas 209 40 698 1053 10;
#X obj 46 954 outlet;
#X obj 46 42 inlet;
#X obj 201 42 inlet;
#X obj 363 42 inlet;
#N canvas 0 22 577 494 \$0-args 0;
#X obj 49 49 inlet;
#X obj 49 382 outlet;
#X obj 219 382 outlet;
#X msg 49 75 \$1 \$1;
#X obj 219 354 r \$0-noarg;
#X obj 49 354 r \$0-thisarg;
#N canvas 0 22 254 277 \$0-test-1 0;
#X obj 41 46 inlet;
#X obj 113 102 makefilename $%d-;
#X obj 41 75 t b f;
#X obj 41 102 symbol \$1-;
#X obj 41 130 sel s;
#X obj 68 153 b;
#X obj 68 176 list append \$1;
#X obj 41 222 s \$0-noarg;
#X obj 68 200 s \$0-thisarg;
#X connect 0 0 2 0;
#X connect 1 0 4 1;
#X connect 2 0 3 0;
#X connect 2 1 1 0;
#X connect 3 0 4 0;
#X connect 4 0 7 0;
#X connect 4 1 5 0;
#X connect 5 0 6 0;
#X connect 6 0 8 0;
#X restore 49 326 pd \$0-test-1;
#N canvas 0 22 254 277 \$0-test-2 0;
#X obj 41 46 inlet;
#X obj 113 102 makefilename $%d-;
#X obj 41 75 t b f;
#X obj 41 130 sel s;
#X obj 68 153 b;
#X obj 41 222 s \$0-noarg;
#X obj 68 200 s \$0-thisarg;
#X obj 41 102 symbol \$2-;
#X obj 68 176 list append \$2;
#X connect 0 0 2 0;
#X connect 1 0 3 1;
#X connect 2 0 7 0;
#X connect 2 1 1 0;
#X connect 3 0 5 0;
#X connect 3 1 4 0;
#X connect 4 0 8 0;
#X connect 7 0 3 0;
#X connect 8 0 6 0;
#X restore 64 304 pd \$0-test-2;
#N canvas 0 22 254 277 \$0-test-3 0;
#X obj 41 46 inlet;
#X obj 113 102 makefilename $%d-;
#X obj 41 75 t b f;
#X obj 41 130 sel s;
#X obj 68 153 b;
#X obj 41 222 s \$0-noarg;
#X obj 68 200 s \$0-thisarg;
#X obj 41 102 symbol \$3-;
#X obj 68 176 list append \$3;
#X connect 0 0 2 0;
#X connect 1 0 3 1;
#X connect 2 0 7 0;
#X connect 2 1 1 0;
#X connect 3 0 5 0;
#X connect 3 1 4 0;
#X connect 4 0 8 0;
#X connect 7 0 3 0;
#X connect 8 0 6 0;
#X restore 79 283 pd \$0-test-3;
#N canvas 0 22 254 277 \$0-test-4 0;
#X obj 41 46 inlet;
#X obj 113 102 makefilename $%d-;
#X obj 41 75 t b f;
#X obj 41 130 sel s;
#X obj 68 153 b;
#X obj 41 222 s \$0-noarg;
#X obj 68 200 s \$0-thisarg;
#X obj 41 102 symbol \$4-;
#X obj 68 176 list append \$4;
#X connect 0 0 2 0;
#X connect 1 0 3 1;
#X connect 2 0 7 0;
#X connect 2 1 1 0;
#X connect 3 0 5 0;
#X connect 3 1 4 0;
#X connect 4 0 8 0;
#X connect 7 0 3 0;
#X connect 8 0 6 0;
#X restore 94 261 pd \$0-test-4;
#N canvas 0 22 254 277 \$0-test-5 0;
#X obj 41 46 inlet;
#X obj 113 102 makefilename $%d-;
#X obj 41 75 t b f;
#X obj 41 130 sel s;
#X obj 68 153 b;
#X obj 41 222 s \$0-noarg;
#X obj 68 200 s \$0-thisarg;
#X obj 41 102 symbol \$5-;
#X obj 68 176 list append \$5;
#X connect 0 0 2 0;
#X connect 1 0 3 1;
#X connect 2 0 7 0;
#X connect 2 1 1 0;
#X connect 3 0 5 0;
#X connect 3 1 4 0;
#X connect 4 0 8 0;
#X connect 7 0 3 0;
#X connect 8 0 6 0;
#X restore 110 239 pd \$0-test-5;
#N canvas 0 22 254 277 \$0-test-6 0;
#X obj 41 46 inlet;
#X obj 113 102 makefilename $%d-;
#X obj 41 75 t b f;
#X obj 41 130 sel s;
#X obj 68 153 b;
#X obj 41 222 s \$0-noarg;
#X obj 68 200 s \$0-thisarg;
#X obj 41 102 symbol \$6-;
#X obj 68 176 list append \$6;
#X connect 0 0 2 0;
#X connect 1 0 3 1;
#X connect 2 0 7 0;
#X connect 2 1 1 0;
#X connect 3 0 5 0;
#X connect 3 1 4 0;
#X connect 4 0 8 0;
#X connect 7 0 3 0;
#X connect 8 0 6 0;
#X restore 125 217 pd \$0-test-6;
#N canvas 0 22 254 277 \$0-test-7 0;
#X obj 41 46 inlet;
#X obj 113 102 makefilename $%d-;
#X obj 41 75 t b f;
#X obj 41 130 sel s;
#X obj 68 153 b;
#X obj 41 222 s \$0-noarg;
#X obj 68 200 s \$0-thisarg;
#X obj 41 102 symbol \$7-;
#X obj 68 176 list append \$7;
#X connect 0 0 2 0;
#X connect 1 0 3 1;
#X connect 2 0 7 0;
#X connect 2 1 1 0;
#X connect 3 0 5 0;
#X connect 3 1 4 0;
#X connect 4 0 8 0;
#X connect 7 0 3 0;
#X connect 8 0 6 0;
#X restore 140 195 pd \$0-test-7;
#N canvas 0 22 254 277 \$0-test-8 0;
#X obj 41 46 inlet;
#X obj 113 102 makefilename $%d-;
#X obj 41 75 t b f;
#X obj 41 130 sel s;
#X obj 68 153 b;
#X obj 41 222 s \$0-noarg;
#X obj 68 200 s \$0-thisarg;
#X obj 41 102 symbol \$8-;
#X obj 68 176 list append \$8;
#X connect 0 0 2 0;
#X connect 1 0 3 1;
#X connect 2 0 7 0;
#X connect 2 1 1 0;
#X connect 3 0 5 0;
#X connect 3 1 4 0;
#X connect 4 0 8 0;
#X connect 7 0 3 0;
#X connect 8 0 6 0;
#X restore 156 173 pd \$0-test-8;
#X obj 49 101 route 1 2 3 4 5 6 7 8 9 10;
#N canvas 0 22 254 277 \$0-test-9 0;
#X obj 41 46 inlet;
#X obj 113 102 makefilename $%d-;
#X obj 41 75 t b f;
#X obj 41 130 sel s;
#X obj 68 153 b;
#X obj 41 222 s \$0-noarg;
#X obj 68 200 s \$0-thisarg;
#X obj 41 102 symbol \$9-;
#X obj 68 176 list append \$9;
#X connect 0 0 2 0;
#X connect 1 0 3 1;
#X connect 2 0 7 0;
#X connect 2 1 1 0;
#X connect 3 0 5 0;
#X connect 3 1 4 0;
#X connect 4 0 8 0;
#X connect 7 0 3 0;
#X connect 8 0 6 0;
#X restore 171 151 pd \$0-test-9;
#N canvas 0 22 254 277 \$0-test-10 0;
#X obj 41 46 inlet;
#X obj 113 102 makefilename $%d-;
#X obj 41 75 t b f;
#X obj 41 130 sel s;
#X obj 68 153 b;
#X obj 41 222 s \$0-noarg;
#X obj 68 200 s \$0-thisarg;
#X obj 41 102 symbol \$10-;
#X obj 68 176 list append \$10;
#X connect 0 0 2 0;
#X connect 1 0 3 1;
#X connect 2 0 7 0;
#X connect 2 1 1 0;
#X connect 3 0 5 0;
#X connect 3 1 4 0;
#X connect 4 0 8 0;
#X connect 7 0 3 0;
#X connect 8 0 6 0;
#X restore 186 129 pd \$0-test-10;
#X text 46 27 argument number;
#X text 42 419 argument if it exists;
#X text 216 419 bang if it doesn't;
#X text 194 35 This subpatch tests for the presence of up to 10 creation
arguments. After IOhannes Zmölnig.;
#X connect 0 0 3 0;
#X connect 3 0 14 0;
#X connect 4 0 2 0;
#X connect 5 0 1 0;
#X connect 14 0 6 0;
#X connect 14 1 7 0;
#X connect 14 2 8 0;
#X connect 14 3 9 0;
#X connect 14 4 10 0;
#X connect 14 5 11 0;
#X connect 14 6 12 0;
#X connect 14 7 13 0;
#X connect 14 8 15 0;
#X connect 14 9 16 0;
#X restore 392 161 pd \$0-args;
#X obj 392 109 loadbang;
#X msg 392 134 1;
#X obj 363 265 route symbol;
#X obj 393 321 s \$0-array-name;
#X text 85 980 2015 Matt Barber;
#X obj 251 42 inlet;
#X obj 159 259 moses 0;
#X obj 198 321 s \$0-direction;
#X obj 46 321 swap;
#X obj 209 551 f;
#X obj 161 516 until;
#X obj 67 357 s \$0-onset;
#X obj 253 706 r \$0-array-name;
#X msg 159 284 0;
#X msg 198 284 1;
#X obj 277 179 route bang;
#X obj 301 42 inlet;
#X obj 363 199 t a;
#X obj 46 284 array-rangenorm;
#X obj 46 115 list split 4;
#X obj 259 551 + 1;
#X obj 228 951 tabinsert;
#X obj 209 737 tabread;
#X msg 393 292 set \$1;
#X obj 89 766 r \$0-array-name;
#X obj 46 198 pack 0 -1 0 1;
#X obj 46 223 unpack 0 -1 0 1;
#N canvas 891 332 705 803 \$0-first 0;
#X obj 73 47 inlet;
#X obj 494 202 r \$0-direction;
#X obj 312 283 r \$0-onset;
#X obj 312 310 tabread;
#X obj 251 257 r \$0-array-name;
#X obj 197 310 tabread;
#X obj 140 129 until;
#X obj 140 179 f;
#X obj 197 179 + 1;
#X obj 155 153 r \$0-onset;
#X obj 167 103 r \$0-!=;
#X obj 73 264 f;
#X obj 197 416 !=;
#X obj 197 443 sel 1;
#X obj 197 469 s \$0-!=;
#X obj 73 103 t b f;
#X obj 73 73 - 1;
#X obj 73 528 outlet;
#X obj 197 528 outlet;
#X obj 456 403 tabswap2;
#X obj 501 356 r \$0-onset;
#X obj 73 404 -;
#X obj 88 378 r \$0-onset;
#X obj 197 336 t f f;
#X obj 426 168 f;
#X obj 426 109 r \$0-!=;
#X obj 456 303 f;
#X obj 456 249 sel 1;
#X obj 73 464 t f f;
#X obj 385 83 r \$0-array-name;
#X obj 212 389 r \$0-o;
#X obj 471 169 r \$0-o;
#X obj 312 336 s \$0-o;
#X obj 224 364 s \$0-!=-val;
#X obj 441 136 r \$0-!=-val;
#X obj 471 276 r \$0-!=-val;
#X obj 197 207 t f f;
#X obj 224 232 s \$0-!=-ind;
#X obj 478 330 r \$0-!=-ind;
#X obj 88 232 r \$0-!=-ind;
#X obj 456 202 >;
#X obj 456 228 !=;
#X text 86 559 Total p so far.;
#X text 303 477 [array-search] checks the sorted range to see if it
is sorted ascending or descending before it performs its search. However
\, since insertion sort always starts with a "sorted list" of one element
\, the binary search can't tell whether it's intended to be ascending
or descending. In the parent patch \, ascending is given a value of
1 \, and descending a value of 0 \; \; This routine iterates over the
first elements of the range until it finds an element that is not equal
to the first. Then \, whether that element is greater than the first
element ([> ] outputs a 1 if so \, 0 otherwise) \, that can be compared
with the requested direction from the parent patch. If the values don't
match \, then this element is swapped with the first. Then the binary
search can tell what's what. \; \; Meanwhile \, we've kept tabs on
how far into the range we've had to iterate \, and send that out to
the parent so that the main binary insertion sort routine can commence.
, f 61;
#X obj 73 294 + 1;
#X text 98 294 <- start parent on next index., f 15;
#X connect 0 0 16 0;
#X connect 1 0 41 1;
#X connect 2 0 3 0;
#X connect 3 0 32 0;
#X connect 4 0 5 0;
#X connect 4 0 3 0;
#X connect 5 0 23 0;
#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 8 0 7 1;
#X connect 8 0 36 0;
#X connect 9 0 7 1;
#X connect 10 0 6 1;
#X connect 11 0 44 0;
#X connect 12 0 13 0;
#X connect 13 0 14 0;
#X connect 15 0 11 0;
#X connect 15 1 6 0;
#X connect 16 0 15 0;
#X connect 20 0 19 2;
#X connect 21 0 28 0;
#X connect 22 0 21 1;
#X connect 23 0 12 0;
#X connect 23 1 33 0;
#X connect 24 0 40 0;
#X connect 25 0 24 0;
#X connect 26 0 19 0;
#X connect 27 0 26 0;
#X connect 28 0 17 0;
#X connect 28 1 18 0;
#X connect 29 0 19 0;
#X connect 30 0 12 1;
#X connect 31 0 40 1;
#X connect 34 0 24 1;
#X connect 35 0 26 1;
#X connect 36 0 5 0;
#X connect 36 1 37 0;
#X connect 38 0 19 1;
#X connect 39 0 11 1;
#X connect 40 0 41 0;
#X connect 41 0 27 0;
#X connect 44 0 21 0;
#X restore 161 419 pd \$0-first;
#X obj 46 389 t b f f, f 39;
#X obj 161 452 * -1;
#X obj 161 483 +;
#X text 54 493 init p minus -> total p so far, f 16;
#X obj 209 637 +;
#X obj 284 606 r \$0-onset;
#X obj 253 797 array-search;
#X obj 342 737 r \$0-array-name;
#X obj 270 737 r \$0-onset;
#X obj 209 579 t f f;
#X obj 226 606 s \$0-p;
#X obj 287 766 r \$0-p;
#X obj 209 766 t f f;
#X obj 342 766 list split 1;
#X obj 209 663 t f f;
#X obj 273 680 s \$0-ind;
#X obj 343 833 r \$0-ind;
#X obj 328 873 swap;
#X obj 329 897 -;
#X obj 329 922 + 1;
#X obj 46 256 array-range;
#X connect 1 0 24 0;
#X connect 2 0 30 1;
#X connect 3 0 22 0;
#X connect 4 0 22 0;
#X connect 5 0 6 0;
#X connect 6 0 4 0;
#X connect 7 0 28 0;
#X connect 10 0 30 2;
#X connect 11 0 18 0;
#X connect 11 1 19 0;
#X connect 13 0 33 0;
#X connect 13 1 16 0;
#X connect 14 0 25 0;
#X connect 14 0 42 0;
#X connect 15 0 14 0;
#X connect 17 0 27 0;
#X connect 18 0 12 0;
#X connect 19 0 12 0;
#X connect 20 1 22 0;
#X connect 21 0 30 3;
#X connect 22 0 7 0;
#X connect 22 0 53 3;
#X connect 23 0 13 0;
#X connect 23 1 13 1;
#X connect 24 0 30 0;
#X connect 24 1 20 0;
#X connect 24 2 30 0;
#X connect 25 0 14 1;
#X connect 27 0 45 0;
#X connect 28 0 8 0;
#X connect 29 0 26 0;
#X connect 30 0 31 0;
#X connect 31 0 53 0;
#X connect 31 1 53 1;
#X connect 31 2 53 2;
#X connect 31 3 11 0;
#X connect 32 0 34 0;
#X connect 32 1 14 1;
#X connect 33 0 0 0;
#X connect 33 1 32 0;
#X connect 33 2 35 1;
#X connect 34 0 35 0;
#X connect 35 0 15 0;
#X connect 37 0 47 0;
#X connect 38 0 37 1;
#X connect 39 0 26 1;
#X connect 39 0 50 0;
#X connect 39 1 26 1;
#X connect 39 1 50 0;
#X connect 40 0 46 0;
#X connect 41 0 39 1;
#X connect 42 0 37 0;
#X connect 42 1 43 0;
#X connect 44 0 39 2;
#X connect 45 0 26 0;
#X connect 45 1 39 0;
#X connect 46 1 39 4;
#X connect 47 0 27 0;
#X connect 47 1 48 0;
#X connect 49 0 50 1;
#X connect 50 0 51 0;
#X connect 50 1 51 1;
#X connect 51 0 52 0;
#X connect 52 0 26 2;
#X connect 53 0 23 0;
#X connect 53 1 23 1;
#X connect 53 2 23 2;