-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathls.quicksort.pd
executable file
·1022 lines (1022 loc) · 25.7 KB
/
ls.quicksort.pd
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
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
#N canvas 0 23 1680 1005 12;
#N canvas 0 23 1288 749 sublistParams 0;
#X obj 296 236 list store;
#X text 378 235 list of indexes + lengths to process;
#X obj 346 193 r \$0-subListParams_L;
#X obj 363 215 r \$0-subListParams_R;
#X obj 296 265 list split 2;
#X obj 263 52 r \$0-next_sublist_parameters;
#X obj 336 311 s \$0-subListParams_R;
#X obj 377 287 s \$0-subListParams_isempty;
#X obj 296 333 s \$0-subListParams_pair;
#X obj 296 92 t b b;
#X obj 328 139 f;
#X obj 358 139 + 1;
#X obj 328 162 v \$0-steps;
#X msg 346 117 0;
#X obj 346 95 r \$0-reset_steps;
#X connect 0 0 4 0;
#X connect 2 0 0 0;
#X connect 3 0 0 1;
#X connect 4 0 8 0;
#X connect 4 1 6 0;
#X connect 4 2 7 0;
#X connect 5 0 9 0;
#X connect 9 0 0 0;
#X connect 9 1 10 0;
#X connect 10 0 11 0;
#X connect 10 0 12 0;
#X connect 11 0 10 1;
#X connect 13 0 10 1;
#X connect 14 0 13 0;
#X restore 967 254 pd sublistParams;
#N canvas 720 23 960 1005 get_sublist 0;
#X obj 70 237 r \$0-subListParams_pair;
#X obj 69 155 s \$0-next_sublist_parameters;
#X text 276 155 get next 2 sublist parameters;
#N canvas 0 23 1055 755 getlistToPrepend 0;
#X obj 131 16 inlet;
#X obj 131 180 spigot;
#X obj 170 73 unpack;
#X obj 130 48 t l l;
#X obj 170 97 > 0;
#X obj 209 97 > 0;
#X obj 169 132 &&;
#X msg 131 140 \$1;
#X obj 271 205 s \$0-currentList_sendTo;
#X msg 271 175 symbol \$1-listToPrepend;
#X obj 271 152 f \$0;
#X obj 135 556 r \$0-listToPrepend;
#X obj 136 604 list trim;
#X obj 135 580 list prepend prepend;
#X obj 136 629 s \$0-endLoopList_L;
#X obj 131 380 s \$0-currentList_L;
#X obj 284 272 > 0;
#X obj 131 282 spigot;
#X obj 131 203 t f f b;
#X msg 131 348 get 0 \$1;
#X obj 142 311 t f f;
#X msg 186 311 0 \$1;
#X connect 0 0 3 0;
#X connect 1 0 18 0;
#X connect 2 0 4 0;
#X connect 2 1 5 0;
#X connect 3 0 7 0;
#X connect 3 1 2 0;
#X connect 4 0 6 0;
#X connect 5 0 6 1;
#X connect 6 0 1 1;
#X connect 7 0 1 0;
#X connect 9 0 8 0;
#X connect 10 0 9 0;
#X connect 11 0 13 0;
#X connect 12 0 14 0;
#X connect 13 0 12 0;
#X connect 16 0 17 1;
#X connect 17 0 20 0;
#X connect 18 0 17 0;
#X connect 18 1 16 0;
#X connect 18 2 10 0;
#X connect 19 0 15 0;
#X connect 20 0 19 0;
#X connect 20 1 21 0;
#X restore 90 404 pd getlistToPrepend;
#N canvas 93 104 1055 755 getlistToAppend 0;
#X obj 131 16 inlet;
#X obj 130 124 spigot;
#X obj 130 48 t l l;
#X obj 169 96 > 0;
#X obj 271 165 s \$0-currentList_sendTo;
#X obj 271 119 f \$0;
#X obj 130 497 s \$0-currentList_L;
#X obj 136 654 list trim;
#X obj 136 679 s \$0-endLoopList_L;
#X msg 169 75 \$2;
#X msg 271 142 symbol \$1-listToAppend;
#X obj 135 606 r \$0-listToAppend;
#X obj 135 630 list prepend append;
#X obj 130 147 t l b;
#X obj 153 265 v \$0-mainListLength;
#X obj 153 296 -;
#X obj 130 193 unpack 0 0;
#X obj 130 217 +;
#X obj 130 241 t f b f;
#X obj 130 332 pack 0 0;
#X msg 130 465 get \$1 \$2;
#X obj 130 356 t l l;
#X msg 283 386 \$2;
#X obj 283 409 > 0;
#X obj 130 419 spigot;
#X obj 130 443 t l l;
#X connect 0 0 2 0;
#X connect 1 0 13 0;
#X connect 2 0 1 0;
#X connect 2 1 9 0;
#X connect 3 0 1 1;
#X connect 5 0 10 0;
#X connect 7 0 8 0;
#X connect 9 0 3 0;
#X connect 10 0 4 0;
#X connect 11 0 12 0;
#X connect 12 0 7 0;
#X connect 13 0 16 0;
#X connect 13 1 5 0;
#X connect 14 0 15 0;
#X connect 15 0 19 1;
#X connect 16 0 17 0;
#X connect 16 1 17 1;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X connect 18 1 14 0;
#X connect 18 2 15 1;
#X connect 19 0 21 0;
#X connect 20 0 6 0;
#X connect 21 0 24 0;
#X connect 21 1 22 0;
#X connect 22 0 23 0;
#X connect 23 0 24 1;
#X connect 24 0 25 0;
#X connect 25 0 20 0;
#X restore 110 378 pd getlistToAppend;
#X text 253 377 set sublist to append to the current sublist;
#X text 233 403 set sublist to prepend to the current sublist;
#X text 207 430 bang this cycle processed list to send it to the currentList
and trigger a new loop cycle;
#X obj 69 41 inlet;
#X obj 26 519 outlet;
#N canvas 199 221 1196 807 subsort 0;
#X obj 498 -85 inlet;
#X obj 530 8 s \$0-currentList_sendTo;
#X obj 530 -38 f \$0;
#X obj 361 96 s \$0-currentList_L;
#X msg 361 73 get \$1 \$2;
#X obj 498 -62 t l b;
#X obj 358 173 r \$0-listToProcess;
#X msg 530 -15 symbol \$1-listToProcess;
#X obj 358 533 s \$0-endLoopList_R;
#X obj 498 34 t l l;
#X obj 530 504 s \$0-subListParams_L;
#X obj 530 482 list trim;
#X obj 530 460 list prepend append;
#X msg 569 334 \$2;
#X obj 530 381 spigot;
#X obj 530 310 t l l;
#X obj 530 406 t l l;
#X obj 569 357 > 1;
#N canvas 346 101 1313 869 ls_split_last_as_pivot 0;
#X obj 378 342 list store;
#X text 167 541 0: both args are numbers \;;
#X text 160 554 -1: pivot is char \, current val is number;
#X text 167 568 1: pivot is number \, current val is char;
#X text 167 582 2: pivot is char \, current val is char;
#N canvas 261 49 1419 818 compare_float_and_symbols 0;
#X obj 751 44 inlet;
#X obj 751 66 route float symbol;
#X msg 799 131 1;
#X msg 895 121 2;
#X msg 928 98 0;
#X obj 813 184 s \$0-pivot_type;
#X obj 550 49 inlet;
#X obj 550 71 route float symbol;
#X msg 551 144 1;
#X msg 583 144 2;
#X msg 615 144 0;
#X obj 551 170 s \$0-thisval_type;
#X text 1000 423 0: both args are numbers \;;
#X text 993 436 -1: pivot is char \, current val is number;
#X text 1000 450 1: pivot is number \, current val is char;
#X obj 576 425 expr if(($f2==2)&&($f1==1) \, -1 \, if(($f2==1)&&($f1==2)
\, 1 \, if(($f2==2)&&($f1==2) \, 2 \, if(($f2==1)&&($f1==1) \, 0 \,
100))));
#X text 1000 464 2: pivot is char \, current val is char;
#X obj 476 461 sel 0 -1 1 2;
#X obj 986 402 r \$0-pivot_type;
#X obj 576 403 r \$0-thisval_type;
#N canvas 0 23 624 510 float_and_float 0;
#X obj 36 39 inlet;
#X obj 169 115 v \$0-pivot_float;
#X obj 36 115 v \$0-currval_float;
#X obj 36 83 t b b;
#X obj 36 139 <=;
#X obj 36 163 sel 1 0;
#X msg 36 260 append \$1;
#X msg 346 261 append \$1;
#X obj 346 238 v \$0-currval_float;
#X obj 36 237 v \$0-currval_float;
#X obj 346 284 outlet;
#X obj 36 284 outlet;
#X connect 0 0 3 0;
#X connect 1 0 4 1;
#X connect 2 0 4 0;
#X connect 3 0 2 0;
#X connect 3 1 1 0;
#X connect 4 0 5 0;
#X connect 5 0 9 0;
#X connect 5 1 8 0;
#X connect 6 0 11 0;
#X connect 7 0 10 0;
#X connect 8 0 7 0;
#X connect 9 0 6 0;
#X restore 496 580 pd float_and_float;
#X obj 752 279 v \$0-pivot_float;
#X obj 772 256 v \$0-pivot_symbol_as_float;
#X obj 772 234 list fromsymbol;
#X obj 477 232 list fromsymbol;
#X obj 477 254 v \$0-currval_symbol_as_float;
#X obj 467 277 v \$0-currval_float;
#X obj 496 557 sel 0;
#X obj 576 462 s \$0-compare_proc;
#X obj 496 509 r \$0-compare_proc;
#X obj 619 602 s \$0-list_right;
#X obj 496 603 s \$0-list_left;
#X obj 930 184 v \$0-pivottype;
#X obj 467 98 t b f;
#X obj 751 96 t b f;
#X obj 798 97 t b symbol;
#X obj 510 98 t b symbol;
#X obj 736 509 r \$0-compare_proc;
#X obj 736 602 s \$0-list_right;
#X obj 736 557 sel -1;
#N canvas 0 23 624 510 char_and_float 0;
#X obj 36 39 inlet;
#X msg 37 114 append \$1;
#X obj 37 137 outlet;
#X obj 37 66 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 37 90 v \$0-currval_float;
#X connect 0 0 3 0;
#X connect 1 0 2 0;
#X connect 3 0 4 0;
#X connect 4 0 1 0;
#X restore 736 580 pd char_and_float;
#X obj 883 507 r \$0-compare_proc;
#N canvas 0 23 624 510 float_and_char 0;
#X obj 36 39 inlet;
#X msg 37 228 append \$1;
#X obj 37 251 outlet;
#X obj 37 66 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 92 85 v \$0-currval_symbol_as_float;
#X obj 92 115 list tosymbol;
#X obj 104 185 r \$0-curr_symbol;
#X obj 37 207 list store;
#X obj 38 168 list prepend;
#X obj 38 144 list trim;
#X connect 0 0 3 0;
#X connect 1 0 2 0;
#X connect 3 0 4 0;
#X connect 3 0 9 0;
#X connect 4 0 5 0;
#X connect 6 0 7 1;
#X connect 7 0 1 0;
#X connect 8 0 7 0;
#X connect 9 0 8 0;
#X restore 883 578 pd float_and_char;
#X obj 883 555 sel 1;
#X obj 883 602 s \$0-list_left;
#X obj 1036 507 r \$0-compare_proc;
#X obj 1036 601 s \$0-list_left;
#X obj 1036 555 sel 2;
#N canvas 92 138 735 689 char_and_char 0;
#X obj 36 39 inlet;
#X obj 36 83 t b b;
#X msg 127 296 append \$1;
#X msg 185 198 append \$1;
#X obj 185 221 outlet;
#X obj 127 320 outlet;
#N canvas 0 23 1680 1005 symbol_compare 0;
#X obj 317 153 list fromsymbol;
#X obj 317 131 list prepend;
#X obj 317 107 list trim;
#X obj 317 223 list length;
#X obj 537 153 list fromsymbol;
#X obj 537 131 list prepend;
#X obj 537 107 list trim;
#X obj 537 223 list length;
#X obj 722 495 list store;
#X obj 948 497 list store;
#N canvas 0 23 1057 815 iterate 0;
#X obj 158 171 until;
#X obj 158 199 f;
#X obj 196 199 + 1;
#X obj 158 84 inlet;
#X obj 301 120 inlet;
#X obj 154 354 outlet;
#X obj 388 448 outlet;
#X obj 300 151 t b b b;
#X msg 290 186 0;
#X obj 341 307 sel;
#X obj 158 123 t f b f;
#X obj 204 145 - 1;
#X obj 158 221 t f f;
#X obj 228 256 t f b;
#X obj 260 278 v \$0-comp;
#X obj 260 301 == 0;
#X obj 231 330 spigot;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 1 0 12 0;
#X connect 2 0 1 1;
#X connect 3 0 10 0;
#X connect 4 0 7 0;
#X connect 7 1 8 0;
#X connect 7 2 0 1;
#X connect 7 2 6 0;
#X connect 8 0 1 1;
#X connect 9 0 6 0;
#X connect 10 0 0 0;
#X connect 10 1 8 0;
#X connect 10 2 11 0;
#X connect 11 0 9 1;
#X connect 12 0 13 0;
#X connect 12 1 5 0;
#X connect 13 0 16 0;
#X connect 13 1 14 0;
#X connect 14 0 15 0;
#X connect 15 0 16 1;
#X connect 16 0 9 0;
#X restore 317 405 pd iterate;
#X msg 317 436 get \$1 1;
#X obj 722 537 s;
#X obj 948 541 s;
#X obj 876 595 r \$0-testleft;
#X obj 985 595 r \$0-testright;
#N canvas 317 550 847 508 to_test 0;
#X obj 86 162 f \$0;
#X obj 107 90 f \$0;
#X obj 86 210 s \$0-leftSendTo;
#X obj 107 136 s \$0-rightSendTo;
#X obj 47 68 t a a b b;
#X obj 67 239 s \$0-rightLeft;
#X obj 47 269 s \$0-leftLeft;
#X obj 47 41 inlet;
#X msg 86 185 symbol \$1-testleft;
#X msg 107 113 symbol \$1-testright;
#X connect 0 0 8 0;
#X connect 1 0 9 0;
#X connect 4 0 6 0;
#X connect 4 1 5 0;
#X connect 4 2 0 0;
#X connect 4 3 1 0;
#X connect 7 0 4 0;
#X connect 8 0 2 0;
#X connect 9 0 3 0;
#X restore 317 460 pd to_test;
#X obj 985 617 t f f;
#X obj 834 240 v \$0-comp;
#X text 921 229 0 no diff;
#X text 921 242 1 left;
#X text 921 255 2 right;
#X obj 834 197 loadbang;
#X obj 876 676 spigot;
#X obj 915 645 !=;
#X obj 985 676 spigot;
#X obj 298 577 v \$0-comp;
#X obj 384 427 s \$0-get_final_symbol;
#X obj 298 512 r \$0-get_final_symbol;
#X obj 740 516 r \$0-leftSendTo;
#X obj 966 519 r \$0-rightSendTo;
#X obj 722 452 r \$0-leftLeft;
#X obj 948 454 r \$0-rightLeft;
#X obj 789 474 r \$0-leftRight;
#X obj 349 202 s \$0-leftRight;
#X obj 569 202 s \$0-rightRight;
#X obj 1015 476 r \$0-rightRight;
#X obj 384 382 r \$0-stopIteration;
#X obj 899 828 v \$0-comp;
#X obj 876 862 s \$0-stopIteration;
#X obj 298 697 sel 1 2;
#X obj 984 1312 outlet;
#X obj 984 1289 r \$0-rightOutlet;
#X obj 298 647 t f f;
#X obj 876 730 >;
#X obj 876 758 + 1;
#X obj 876 782 t b f b;
#X obj 330 671 s \$0-rightOutlet;
#X obj 317 51 inlet;
#X obj 537 51 inlet;
#X obj 317 181 t l l b;
#X obj 537 181 t l l b;
#X obj 682 202 v \$0-comp;
#X obj 456 202 v \$0-comp;
#X obj 317 245 t f f;
#X obj 537 245 t f f;
#X text 642 304 0 equal length;
#X obj 317 327 min;
#X msg 682 180 0;
#X msg 834 219 0;
#X msg 456 181 0;
#X obj 470 601 v \$0-len;
#X obj 298 555 t b b b;
#X obj 562 601 v \$0-comp;
#X obj 562 624 sel 0;
#X msg 562 654 1;
#X msg 594 654 0;
#X obj 470 623 spigot;
#X obj 470 648 v \$0-comp;
#X text 642 316 1 left is smaller;
#X text 642 327 2 right is smaller;
#X text 466 702 if length is smaller \, drop the smallest symbol;
#X text 560 674 same chars?;
#X obj 967 646 f;
#X obj 876 617 t f b f;
#N canvas 0 23 742 472 lengthcompare 0;
#X obj 102 101 inlet;
#X obj 162 101 inlet;
#X obj 100 184 spigot;
#X obj 148 151 !=, f 4;
#X obj 209 184 spigot;
#X obj 303 224 v \$0-len;
#X obj 303 177 sel 0;
#X msg 302 201 0;
#X obj 100 208 >;
#X obj 100 232 + 1;
#X obj 161 124 t f f;
#X obj 193 153 f;
#X obj 102 125 t f b f;
#X connect 0 0 12 0;
#X connect 1 0 10 0;
#X connect 2 0 8 0;
#X connect 3 0 4 1;
#X connect 3 0 2 1;
#X connect 3 0 6 0;
#X connect 4 0 8 1;
#X connect 6 0 7 0;
#X connect 7 0 5 0;
#X connect 8 0 9 0;
#X connect 9 0 5 0;
#X connect 10 0 11 1;
#X connect 10 1 3 1;
#X connect 11 0 4 0;
#X connect 12 0 2 0;
#X connect 12 1 11 0;
#X connect 12 2 3 0;
#X restore 524 304 pd lengthcompare;
#X obj 622 1316 outlet;
#X obj 622 1252 list tosymbol;
#X obj 622 1273 list trim;
#X obj 752 1316 outlet;
#X obj 752 1252 list tosymbol;
#X obj 752 1273 list trim;
#X obj 752 1226 r \$0-outAppend;
#X obj 622 1226 r \$0-outPrepend;
#X obj 485 1079 f \$0;
#X obj 485 1121 s \$0-leftSendTo;
#X obj 465 1142 s \$0-leftLeft;
#X msg 485 1100 symbol \$1-outPrepend;
#X obj 465 1049 t b b;
#X obj 675 1079 f \$0;
#X obj 675 1121 s \$0-leftSendTo;
#X obj 655 1142 s \$0-leftLeft;
#X obj 655 1049 t b b;
#X msg 675 1100 symbol \$1-outAppend;
#X obj 622 1295 list prepend;
#X obj 752 1295 list prepend;
#X connect 0 0 50 0;
#X connect 1 0 0 0;
#X connect 2 0 1 0;
#X connect 3 0 54 0;
#X connect 4 0 51 0;
#X connect 5 0 4 0;
#X connect 6 0 5 0;
#X connect 7 0 55 0;
#X connect 8 0 12 0;
#X connect 9 0 13 0;
#X connect 10 0 11 0;
#X connect 10 1 27 0;
#X connect 11 0 16 0;
#X connect 14 0 74 0;
#X connect 15 0 17 0;
#X connect 17 0 73 1;
#X connect 17 1 24 1;
#X connect 22 0 59 0;
#X connect 23 0 44 0;
#X connect 24 0 25 1;
#X connect 24 0 23 1;
#X connect 25 0 44 1;
#X connect 26 0 43 0;
#X connect 28 0 62 0;
#X connect 29 0 12 1;
#X connect 30 0 13 1;
#X connect 31 0 8 0;
#X connect 32 0 9 0;
#X connect 33 0 8 1;
#X connect 36 0 9 1;
#X connect 37 0 10 1;
#X connect 40 0 88 0;
#X connect 40 1 92 0;
#X connect 40 2 88 0;
#X connect 42 0 41 0;
#X connect 43 0 40 0;
#X connect 43 1 47 0;
#X connect 44 0 45 0;
#X connect 45 0 46 0;
#X connect 46 0 39 0;
#X connect 46 1 38 0;
#X connect 48 0 2 0;
#X connect 49 0 6 0;
#X connect 50 0 3 0;
#X connect 50 1 34 0;
#X connect 50 2 60 0;
#X connect 51 0 7 0;
#X connect 51 1 35 0;
#X connect 51 2 58 0;
#X connect 54 0 57 0;
#X connect 54 1 75 0;
#X connect 55 0 57 1;
#X connect 55 1 75 1;
#X connect 57 0 10 0;
#X connect 58 0 52 0;
#X connect 59 0 18 0;
#X connect 60 0 53 0;
#X connect 61 0 67 0;
#X connect 62 0 26 0;
#X connect 62 1 61 0;
#X connect 62 2 63 0;
#X connect 63 0 64 0;
#X connect 64 0 65 0;
#X connect 64 1 66 0;
#X connect 65 0 67 1;
#X connect 66 0 67 1;
#X connect 67 0 68 0;
#X connect 73 0 25 0;
#X connect 74 0 23 0;
#X connect 74 1 73 0;
#X connect 74 2 24 0;
#X connect 77 0 78 0;
#X connect 78 0 94 0;
#X connect 80 0 81 0;
#X connect 81 0 95 0;
#X connect 82 0 80 0;
#X connect 83 0 77 0;
#X connect 84 0 87 0;
#X connect 87 0 85 0;
#X connect 88 0 86 0;
#X connect 88 1 84 0;
#X connect 89 0 93 0;
#X connect 92 0 91 0;
#X connect 92 1 89 0;
#X connect 93 0 90 0;
#X connect 94 0 76 0;
#X connect 95 0 79 0;
#X restore 127 161 pd symbol_compare;
#X obj 194 36 r \$0-curr_symbol;
#X obj 470 38 r \$0-pivot_symbol;
#X obj 243 117 list store;
#X obj 36 107 list store;
#X obj 310 87 r \$0-resetoutlists;
#X connect 0 0 1 0;
#X connect 1 0 10 0;
#X connect 1 1 9 0;
#X connect 2 0 5 0;
#X connect 3 0 4 0;
#X connect 6 0 2 0;
#X connect 6 1 3 0;
#X connect 7 0 10 1;
#X connect 8 0 9 1;
#X connect 9 0 6 1;
#X connect 10 0 6 0;
#X connect 11 0 9 1;
#X connect 11 0 10 1;
#X restore 1036 578 pd char_and_char;
#X obj 1145 601 s \$0-list_right;
#X obj 953 150 t f f;
#X obj 608 232 s \$0-curr_symbol;
#X obj 884 234 s \$0-pivot_symbol;
#X connect 0 0 1 0;
#X connect 1 0 34 0;
#X connect 1 1 35 0;
#X connect 1 2 4 0;
#X connect 2 0 50 0;
#X connect 3 0 50 0;
#X connect 4 0 50 0;
#X connect 6 0 7 0;
#X connect 7 0 33 0;
#X connect 7 1 36 0;
#X connect 7 2 10 0;
#X connect 8 0 11 0;
#X connect 9 0 11 0;
#X connect 10 0 11 0;
#X connect 15 0 17 0;
#X connect 15 0 28 0;
#X connect 18 0 15 1;
#X connect 19 0 15 0;
#X connect 20 0 31 0;
#X connect 20 1 30 0;
#X connect 23 0 22 0;
#X connect 24 0 25 0;
#X connect 27 0 20 0;
#X connect 29 0 27 0;
#X connect 33 0 8 0;
#X connect 33 1 26 0;
#X connect 34 0 2 0;
#X connect 34 1 21 0;
#X connect 35 0 3 0;
#X connect 35 1 23 0;
#X connect 35 1 52 0;
#X connect 36 0 9 0;
#X connect 36 1 24 0;
#X connect 36 1 51 0;
#X connect 37 0 39 0;
#X connect 39 0 40 0;
#X connect 40 0 38 0;
#X connect 41 0 43 0;
#X connect 42 0 44 0;
#X connect 43 0 42 0;
#X connect 45 0 47 0;
#X connect 47 0 48 0;
#X connect 48 0 46 0;
#X connect 48 1 49 0;
#X connect 50 0 5 0;
#X connect 50 1 32 0;
#X restore 378 406 pd compare_float_and_symbols;
#X obj 721 348 r \$0-output_finally;
#N canvas 0 56 1439 750 finally 0;
#X obj -93 100 r \$0-list_left;
#X obj 250 203 r \$0-list_right;
#X obj -93 124 list store;
#X obj 250 227 list store;
#X obj 575 319 v \$0-pivot_float;
#X obj 575 215 sel 1 2 0;
#X obj -14 124 r \$0-resetoutlists;
#X obj 327 227 r \$0-resetoutlists;
#X obj 228 32 inlet;
#X obj 1101 201 r \$0-list_left;
#X obj 892 201 r \$0-list_right;
#X obj 1101 225 list store;
#X obj 892 225 list store;
#X obj 934 426 outlet;
#X obj 1180 225 r \$0-resetoutlists;
#X obj 969 225 r \$0-resetoutlists;
#X obj 1101 254 list length;
#X obj 892 253 list length;
#X obj 1069 345 + 1;
#X obj 892 309 pack 0 0;
#X msg 892 333 \$2 \$1;
#X obj -95 352 list store;
#X obj -16 352 r \$0-resetoutlists;
#X obj -11 322 list trim;
#X obj -12 298 list prepend append;
#X obj -66 225 list trim;
#X obj -96 197 list prepend prepend;
#X obj 227 61 t b b b b b b b;
#X obj -95 375 outlet;
#X obj 1068 45 inlet;
#X obj 1162 345 pack 0 0;
#X obj 1162 313 f;
#X obj 1051 372 f;
#X obj 1051 396 +;
#X obj 1102 276 t f f b f;
#X obj 922 283 t f b;
#X obj 575 192 v \$0-pivottype;
#X obj 662 256 r \$0-pivot_symbol;
#X obj 595 279 list store;
#X obj 673 279 r \$0-resetoutlists;
#X connect 0 0 2 0;
#X connect 1 0 3 0;
#X connect 2 0 26 0;
#X connect 3 0 24 0;
#X connect 4 0 21 1;
#X connect 5 0 4 0;
#X connect 5 1 38 0;
#X connect 6 0 2 1;
#X connect 7 0 3 1;
#X connect 8 0 27 0;
#X connect 9 0 11 0;
#X connect 10 0 12 0;
#X connect 11 0 16 0;
#X connect 12 0 17 0;
#X connect 14 0 11 1;
#X connect 15 0 12 1;
#X connect 16 0 34 0;
#X connect 17 0 35 0;
#X connect 18 0 32 1;
#X connect 19 0 20 0;
#X connect 20 0 13 0;
#X connect 21 0 28 0;
#X connect 22 0 21 1;
#X connect 23 0 21 0;
#X connect 24 0 23 0;
#X connect 25 0 21 0;
#X connect 26 0 25 0;
#X connect 27 0 21 0;
#X connect 27 1 2 0;
#X connect 27 2 3 0;
#X connect 27 3 36 0;
#X connect 27 5 12 0;
#X connect 27 6 11 0;
#X connect 29 0 31 1;
#X connect 30 0 13 0;
#X connect 31 0 30 0;
#X connect 31 0 33 1;
#X connect 32 0 33 0;
#X connect 33 0 19 1;
#X connect 34 1 18 0;
#X connect 34 2 31 0;
#X connect 34 3 30 1;
#X connect 35 0 19 0;
#X connect 35 1 32 0;
#X connect 36 0 5 0;
#X connect 37 0 38 1;
#X connect 38 0 21 1;
#X connect 39 0 38 1;
#X restore 721 371 pd finally;
#X obj 358 432 s \$0-output_finally;
#X obj 358 278 t b b l l b;
#X obj 492 278 s \$0-resetoutlists;
#X obj 377 193 inlet;
#X obj 457 343 r \$0-resetoutlists;
#X obj 993 443 outlet;
#X obj 665 443 outlet;
#X obj 377 215 t l b;
#X obj 787 147 inlet;
#X msg 787 173 \$1;
#N canvas 0 23 688 471 last 0;
#X obj 122 200 list length;
#X obj 140 331 list store;
#X msg 120 278 get \$1 1;
#X obj 122 177 t l l;
#X obj 122 -16 inlet;
#X obj 122 38 route list bang;
#X obj 122 143 list store;
#X obj 140 358 outlet;
#X obj 121 250 t f f;
#X obj 200 358 outlet;
#X obj 121 224 - 1;
#X obj 123 14 t l b;
#X obj 122 65 list trim;
#X obj 123 90 list prepend;
#X connect 0 0 10 0;
#X connect 1 0 7 0;
#X connect 2 0 1 0;
#X connect 3 0 0 0;
#X connect 3 1 1 1;
#X connect 4 0 11 0;
#X connect 5 0 12 0;
#X connect 5 1 6 0;
#X connect 6 0 3 0;
#X connect 8 0 2 0;
#X connect 8 1 9 0;
#X connect 10 0 8 0;
#X connect 11 0 5 0;
#X connect 11 1 1 1;
#X connect 12 0 13 0;
#X connect 13 0 6 0;
#X restore 571 318 pd last;
#N canvas 0 23 450 300 list_iterate 0;
#X obj 70 167 until;
#X obj 70 270 list store;
#X obj 70 192 f;
#X obj 108 193 + 1;
#X msg 122 167 0, f 2;
#X msg 70 241 get \$1 1;
#X obj 119 71 inlet;
#X obj 70 298 outlet;
#X obj 204 298 outlet;
#X obj 70 215 t f f;
#X obj 70 144 list length;
#X obj 119 94 t l b l b;
#X connect 0 0 2 0;
#X connect 1 0 7 0;
#X connect 2 0 3 0;
#X connect 2 0 9 0;
#X connect 3 0 2 1;
#X connect 4 0 2 1;
#X connect 5 0 1 0;
#X connect 6 0 11 0;
#X connect 9 0 5 0;
#X connect 9 1 8 0;
#X connect 10 0 0 0;
#X connect 11 0 10 0;
#X connect 11 1 4 0;
#X connect 11 2 1 1;
#X connect 11 3 1 1;
#X restore 378 371 pd list_iterate;
#N canvas 499 70 450 300 butlast 0;
#X obj 190 139 list length;
#X obj 123 145 t l l;
#X obj 122 -16 inlet;
#X obj 123 116 list store;
#X obj 123 211 outlet;
#X obj 123 185 list split;
#X obj 190 163 - 1;
#X obj 122 8 route list bang;
#X obj 122 35 list trim;
#X obj 123 87 t l b;
#X obj 123 60 list prepend;
#X connect 0 0 6 0;
#X connect 1 0 5 0;
#X connect 1 1 0 0;
#X connect 2 0 7 0;
#X connect 3 0 1 0;
#X connect 5 0 4 0;
#X connect 6 0 5 1;
#X connect 7 0 8 0;
#X connect 7 1 3 0;
#X connect 8 0 10 0;
#X connect 9 0 3 0;
#X connect 9 1 3 1;
#X connect 10 0 9 0;
#X restore 413 310 pd butlast;
#X connect 0 0 19 0;
#X connect 6 0 7 0;
#X connect 7 0 14 0;
#X connect 7 1 13 0;
#X connect 9 0 8 0;
#X connect 9 1 0 0;
#X connect 9 2 20 0;
#X connect 9 3 18 0;
#X connect 9 4 10 0;
#X connect 11 0 15 0;
#X connect 12 0 0 1;
#X connect 15 0 9 0;
#X connect 15 1 10 0;
#X connect 16 0 17 0;
#X connect 17 0 7 1;
#X connect 18 0 5 1;
#X connect 19 0 5 0;
#X connect 20 0 0 1;
#X restore 358 236 pd ls_split_last_as_pivot;
#X text 542 264 right outlet: next subsegments to process (idx length)
;
#X text 542 235 left outlet: current processed segment (w/ pivot in
the right place);
#X text 700 7 route currentList to be processed below;
#X text 157 97 gets sublist to be processed;
#X connect 0 0 5 0;
#X connect 2 0 7 0;
#X connect 4 0 3 0;
#X connect 5 0 9 0;
#X connect 5 1 2 0;
#X connect 6 0 18 0;
#X connect 7 0 1 0;
#X connect 9 0 4 0;
#X connect 9 1 18 1;
#X connect 11 0 10 0;
#X connect 12 0 11 0;
#X connect 13 0 17 0;
#X connect 14 0 16 0;
#X connect 15 0 14 0;
#X connect 15 1 13 0;
#X connect 16 0 12 0;
#X connect 17 0 14 1;
#X connect 18 0 8 0;
#X connect 18 1 15 0;
#X restore 130 332 pd subsort;
#X obj 68 90 t b b;
#X obj 70 431 s \$0-endLoopList_L;
#X text 208 328 sort segment according to pivot (last element of segment)
;
#X obj 26 481 t b b;
#X obj 73 480 s \$0-getEachStep;
#X obj 111 89 s \$0-getEachStep;
#X obj 28 267 t b b l l l;
#X connect 0 0 17 0;
#X connect 8 0 11 0;
#X connect 11 0 1 0;
#X connect 14 0 9 0;
#X connect 14 1 15 0;
#X connect 17 0 14 0;
#X connect 17 1 12 0;
#X connect 17 2 3 0;
#X connect 17 3 4 0;
#X connect 17 4 10 0;
#X restore 148 248 pd get_sublist;
#N canvas 0 23 835 612 currentList 0;
#X obj 23 68 list store;
#X text 105 67 list of indexes + lengths to process;
#X obj 90 47 r \$0-currentList_R;
#X obj 23 25 r \$0-currentList_L;
#X obj 23 138 s;
#X obj 41 107 r \$0-currentList_sendTo;
#X connect 0 0 4 0;
#X connect 2 0 0 1;
#X connect 3 0 0 0;
#X connect 5 0 4 1;
#X restore 967 232 pd currentList;
#N canvas 0 23 450 300 endLoopList 0;
#X obj 62 104 list store;
#X text 144 103 list of indexes + lengths to process;
#X obj 62 61 r \$0-endLoopList_L;
#X obj 129 83 r \$0-endLoopList_R;
#X obj 62 138 t l b;
#X obj 94 160 s \$0-endLoopList_R;
#X text 196 204 set new currentList for next loop;
#X text 229 155 MAYBE NOT NECCESSARY!;
#X obj 62 202 s \$0-currentList_R;
#X connect 0 0 4 0;
#X connect 2 0 0 0;
#X connect 3 0 0 1;
#X connect 4 0 8 0;
#X connect 4 1 5 0;
#X restore 967 276 pd endLoopList;
#X obj 148 278 s \$0-next_sublist_parameters;
#N canvas 839 127 841 553 init 0;
#X obj 28 -26 inlet;
#X obj 68 148 list length;
#X obj 68 251 v \$0-mainListLength;
#X msg 100 196 0 \$1;
#X obj 68 172 t f f;
#X obj 100 226 s \$0-subListParams_R;
#X obj 135 82 s \$0-subListParams_R;
#X obj 135 61 s \$0-currentList_R;
#X obj 135 103 s \$0-endLoopList_R;
#X obj 48 300 s \$0-currentList_R;
#X obj 28 331 outlet;
#X text 158 147 1 stores input list / stores its length;
#X text 182 303 2 stores current big list;
#X text 131 40 reset all "list store"'s;
#X obj 381 63 s \$0-reset_steps;
#X obj 164 -1 v \$0-steps;
#X msg 130 -1 0;
#X obj 28 -2 t l l l b b b;
#X connect 0 0 17 0;
#X connect 1 0 4 0;
#X connect 3 0 5 0;
#X connect 4 0 2 0;
#X connect 4 1 3 0;
#X connect 16 0 15 0;
#X connect 17 0 10 0;
#X connect 17 1 9 0;
#X connect 17 2 1 0;
#X connect 17 3 8 0;
#X connect 17 3 7 0;
#X connect 17 3 6 0;
#X connect 17 4 14 0;
#X connect 17 5 16 0;
#X restore 148 221 pd init;
#X text 352 252 sublist sort iteration;
#X obj 148 131 inlet;
#X obj 833 152 inlet;
#X obj 489 314 r \$0-getEachStep;
#X text 348 217 initialize everything;
#X text 353 278 bang to next iteration;
#N canvas 0 23 752 643 sorted 0;
#X obj 9 8 r \$0-subListParams_isempty;
#X obj 151 108 s \$0-currentList_sendTo;
#X obj 151 62 f \$0;
#X obj 9 108 s \$0-currentList_L;
#X obj 9 132 r \$0-sortedList;
#X msg 151 85 symbol \$1-sortedList;
#X obj 9 30 t b b;
#X obj 9 269 outlet;
#X obj 9 172 t l b;
#X connect 0 0 6 0;
#X connect 2 0 5 0;
#X connect 4 0 8 0;
#X connect 5 0 1 0;
#X connect 6 0 3 0;
#X connect 6 1 2 0;
#X connect 8 0 7 0;
#X restore 151 351 pd sorted;
#X obj 152 412 outlet;
#X obj 383 412 outlet;
#X obj 383 390 v \$0-steps;
#X obj 188 374 t l b;
#X obj 489 413 outlet;
#X obj 489 389 spigot;
#N canvas 0 23 450 300 currentList 0;
#X obj 63 118 s \$0-currentList_sendTo;
#X obj 63 72 f \$0;
#X msg 63 95 symbol \$1-currentListPrint;
#X obj 31 154 s \$0-currentList_L;
#X obj 31 18 inlet;
#X obj 31 43 t b b;
#X obj 29 184 r \$0-currentListPrint;
#X obj 29 209 outlet;
#X connect 1 0 2 0;
#X connect 2 0 0 0;
#X connect 4 0 5 0;
#X connect 5 0 3 0;
#X connect 5 1 1 0;
#X connect 6 0 7 0;
#X restore 489 336 pd currentList;
#X obj 569 413 outlet;
#X obj 569 389 spigot;
#X obj 489 361 t l b;
#X obj 569 362 v \$0-steps;
#X obj 833 175 s \$0-eachStep_spigot;
#X obj 660 362 r \$0-eachStep_spigot;
#X text 878 153 if 1 \, drops each step number and currentList state