1 /* The Great Computer Language Shootout
2 http://shootout.alioth.debian.org/
3 contributed by Isaac Gouy */
10 var maxPerm
= Array(n
);
11 var maxFlipsCount
= 0;
14 for (var i
= 0; i
< n
; i
++) perm1
[i
] = i
;
18 // write-out the first 30 permutations
21 for(var i
=0; i
<n
; i
++) s
+= (perm1
[i
]+1).toString();
25 while (r
!= 1) { count
[r
- 1] = r
; r
--; }
26 if (!(perm1
[0] == 0 || perm1
[m
] == m
)) {
27 for (var i
= 0; i
< n
; i
++) perm
[i
] = perm1
[i
];
32 while (!((k
= perm
[0]) == 0)) {
33 var k2
= (k
+ 1) >> 1;
34 for (var i
= 0; i
< k2
; i
++) {
35 var temp
= perm
[i
]; perm
[i
] = perm
[k
- i
]; perm
[k
- i
] = temp
;
40 if (flipsCount
> maxFlipsCount
) {
41 maxFlipsCount
= flipsCount
;
42 for (var i
= 0; i
< n
; i
++) maxPerm
[i
] = perm1
[i
];
47 if (r
== n
) return maxFlipsCount
;
57 count
[r
] = count
[r
] - 1;
58 if (count
[r
] > 0) break;
65 var ret
= fannkuch(n
);