michael@0: function fannkuch() { michael@0: var count = Array(8); michael@0: var r = 8; michael@0: var done = 0; michael@0: while (done < 40) { michael@0: // write-out the first 30 permutations michael@0: done += r; michael@0: while (r != 1) { count[r - 1] = r; r--; } michael@0: while (true) { michael@0: count[r] = count[r] - 1; michael@0: if (count[r] > 0) break; michael@0: r++; michael@0: } michael@0: } michael@0: return done; michael@0: } michael@0: assertEq(fannkuch(), 41);