@@ -4,29 +4,57 @@ import {node2, node3} from '../../2-node/index.js';
4
4
5
5
export function nodes ( M , list ) {
6
6
assert ( list . length >= 3 && list . length <= 12 ) ;
7
- const out = [ ] ;
8
-
9
- const n = list . length ;
10
-
11
- let i = 0 ;
12
-
13
- switch ( n % 3 ) {
14
- case 1 :
15
- out . push ( node2 ( M , list [ 0 ] , list [ 1 ] ) ) ;
16
- out . push ( node2 ( M , list [ 2 ] , list [ 3 ] ) ) ;
17
- i += 4 ;
18
- break ;
19
- case 2 :
20
- out . push ( node2 ( M , list [ 0 ] , list [ 1 ] ) ) ;
21
- i += 2 ;
22
- break ;
7
+ switch ( list . length ) {
8
+ case 3 :
9
+ return [ node3 ( M , list [ 0 ] , list [ 1 ] , list [ 2 ] ) ] ;
10
+ case 4 :
11
+ return [ node2 ( M , list [ 0 ] , list [ 1 ] ) , node2 ( M , list [ 2 ] , list [ 3 ] ) ] ;
12
+ case 5 :
13
+ return [ node3 ( M , list [ 0 ] , list [ 1 ] , list [ 2 ] ) , node2 ( M , list [ 3 ] , list [ 4 ] ) ] ;
14
+ case 6 :
15
+ return [
16
+ node3 ( M , list [ 0 ] , list [ 1 ] , list [ 2 ] ) ,
17
+ node3 ( M , list [ 3 ] , list [ 4 ] , list [ 5 ] ) ,
18
+ ] ;
19
+ case 7 :
20
+ return [
21
+ node2 ( M , list [ 0 ] , list [ 1 ] ) ,
22
+ node3 ( M , list [ 2 ] , list [ 3 ] , list [ 4 ] ) ,
23
+ node2 ( M , list [ 5 ] , list [ 6 ] ) ,
24
+ ] ;
25
+ case 8 :
26
+ return [
27
+ node3 ( M , list [ 0 ] , list [ 1 ] , list [ 2 ] ) ,
28
+ node2 ( M , list [ 3 ] , list [ 4 ] ) ,
29
+ node3 ( M , list [ 5 ] , list [ 6 ] , list [ 7 ] ) ,
30
+ ] ;
31
+ case 9 :
32
+ return [
33
+ node3 ( M , list [ 0 ] , list [ 1 ] , list [ 2 ] ) ,
34
+ node3 ( M , list [ 3 ] , list [ 4 ] , list [ 5 ] ) ,
35
+ node3 ( M , list [ 6 ] , list [ 7 ] , list [ 8 ] ) ,
36
+ ] ;
37
+ case 10 :
38
+ return [
39
+ node2 ( M , list [ 0 ] , list [ 1 ] ) ,
40
+ node3 ( M , list [ 2 ] , list [ 3 ] , list [ 4 ] ) ,
41
+ node3 ( M , list [ 5 ] , list [ 6 ] , list [ 7 ] ) ,
42
+ node2 ( M , list [ 8 ] , list [ 9 ] ) ,
43
+ ] ;
44
+ case 11 :
45
+ return [
46
+ node2 ( M , list [ 0 ] , list [ 1 ] ) ,
47
+ node3 ( M , list [ 2 ] , list [ 3 ] , list [ 4 ] ) ,
48
+ node3 ( M , list [ 5 ] , list [ 6 ] , list [ 7 ] ) ,
49
+ node3 ( M , list [ 8 ] , list [ 9 ] , list [ 10 ] ) ,
50
+ ] ;
23
51
default :
24
- break ;
52
+ assert ( list . length === 12 ) ;
53
+ return [
54
+ node3 ( M , list [ 0 ] , list [ 1 ] , list [ 2 ] ) ,
55
+ node3 ( M , list [ 3 ] , list [ 4 ] , list [ 5 ] ) ,
56
+ node3 ( M , list [ 6 ] , list [ 7 ] , list [ 8 ] ) ,
57
+ node3 ( M , list [ 9 ] , list [ 10 ] , list [ 11 ] ) ,
58
+ ] ;
25
59
}
26
-
27
- for ( ; i < n ; i += 3 ) {
28
- out . push ( node3 ( M , list [ i ] , list [ i + 1 ] , list [ i + 2 ] ) ) ;
29
- }
30
-
31
- return out ;
32
60
}
0 commit comments