![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/share/emscripten/tests/ |
Upload File : |
/* The Computer Language Benchmarks Game http://shootout.alioth.debian.org/ contributed by Isaac Gouy modified by Matthew Wilson */ function fannkuch(n) { var check = 0; var perm = Array(n); var perm1 = Array(n); var count = Array(n); var maxPerm = Array(n); var maxFlipsCount = 0; var m = n - 1; for (var i = 0; i < n; i++) perm1[i] = i; var r = n; while (true) { // write-out the first 30 permutations if (check < 30){ var s = ""; for(var i=0; i<n; i++) s += (perm1[i]+1).toString(); print(s); check++; } while (r != 1) { count[r - 1] = r; r--; } if (!(perm1[0] == 0 || perm1[m] == m)) { for (var i = 0; i < n; i++) perm[i] = perm1[i]; var flipsCount = 0; var k; while (true) { k = perm[0] if (k == 0) break; var k2 = (k + 1) >> 1; for (var i = 0; i < k2; i++) { var temp = perm[i]; perm[i] = perm[k - i]; perm[k - i] = temp; } flipsCount++; } if (flipsCount > maxFlipsCount) { maxFlipsCount = flipsCount; for (var i = 0; i < n; i++) maxPerm[i] = perm1[i]; } } while (true) { if (r == n) return maxFlipsCount; var perm0 = perm1[0]; var i = 0; while (i < r) { var j = i + 1; perm1[i] = perm1[j]; i = j; } perm1[r] = perm0; count[r] = count[r] - 1; if (count[r] > 0) break; r++; } } } var n = parseInt(arguments[0]); print("Pfannkuchen(" + n.toString() + ") = " + fannkuch(n).toString());