アルゴリズム

【働クリッカー】0.25秒達成

  • POST
試行錯誤の結果 何回かやって得られた感想を箇条書き start関数を叩くまでタイムがスタートしない 初期処理のコストは実質0 関数や変数等の準備を十分行ってから望む事が出来る cash、items、pricesは単なる変数に思えるが上書きできない ES6で実装されたgetterを使っているものと思われる 本気でハックすれば突破出来る?…多分不可能なのだろう 用意されているloop関数は超絶遅い 2番目の引数がms単位でsetIntervalと同じ作りだと思われる 製作者が発表している0.8sですら、1msに1度しか実行できないloop関数では800回程度しか実行出来ない 800回のwork()で1億とか到底無理で、関数内でfor文を回して1000回程度のwork()を叩きまくる糞関数を定義することになる つか、それがまかりとおるなら最初からfor文で回せばよくね? 1秒以内に何万とwork()関数を実行する為、shikakuとprogramming以外は取る必要無し if文は遅い 条件判定式自体のコストはそれほどではないのだが、何万work()を実行する事になるのでその度に調査していては無駄。 for、whileと様々なループ文を試してみたが、再帰関数が最速なようだ あくまでElectronで使われているV8のエンジン固有の話だと思われる これが多分最速だと思います うちの環境(MacbookPro Retina13インチ)で0.24秒をマークした。 works_num = function(num) { return function(){ for (var i = 0; i < num; i++) { work(); } } }; shikaku = function shikakutore(it, works, loop){ return function(){ for (var i = 0; i < loop; i++) { works(); purchase(it); } }; }; shikaku_tore = shikaku(0, works_num(20), 25); program_tore = shikaku(4, works_num(500), 1); hatarake = (function(){ function hatarake(){ shikaku_tore(); program_tore(); cash < 100000000 ?