2048 বট চ্যালেঞ্জ


19

আমরা ২০৪৮ ক্লোন করে যাচ্ছি, ২০৪৮ বিশ্লেষণ করছি , তবে কেন আমরা এখনও এটি খেলিনি? 2048 স্বয়ংক্রিয়ভাবে খেলতে 555 বাইট জাভাস্ক্রিপ্ট স্নিপেট লিখুন, এক ঘন্টা পরে সেরা স্কোর গণনা করা হবে (নীচে স্কোরিং দেখুন)।

সেটআপ:

এতে যান 2048 এবং চালানোর সময়:

 a = new GameManager(4, KeyboardInputManager, HTMLActuator, LocalStorageManager);

a গেমটি নিয়ন্ত্রণের জন্য অবজেক্ট।

নিয়মাবলী:

সেটআপের পরে আপনি গেমটি নিয়ন্ত্রণ করতে কনসোল থেকে জাভাস্ক্রিপ্ট 555 বাইট চালাতে পারেন। গেমের সোর্স কোডটি এখানে (মন্তব্য সহ) পাওয়া যাবে

  • এটি কেবল এমন কিছু করতে পারে যা ব্যবহারকারীর পক্ষে সম্ভব:
    • a.move(n) 4 টি দিকের যে কোনও একটিতে মূল ক্রিয়াকে ট্রিগার করতে।
      • 0: আপ, 1: ডান, 2: ডাউন, 3: বাম
    • a.restart() গেমটি আবার চালু করতে গেমের মাঝখানে পুনরায় চালু করার অনুমতি দেওয়া হয়।
  • গেমের অবস্থা সম্পর্কে তথ্য পাওয়া যাবে a.grid.cells। এই তথ্যটি কেবল পঠনযোগ্য
  • যে কোনও ফাংশনে হুকিং দেওয়া অনুমোদিত, কোনওভাবেই তাদের আচরণ পরিবর্তন করা (বা অন্য কোনও ডেটা পরিবর্তন করা) নয় is
  • প্রতি 250 মিমি একবারে সরানোর অনুমতি দেওয়া হয়

উদাহরণ

থেকে শুরু করার জন্য খুব সাধারণ উদাহরণ কোনও মন্তব্য ছাড়াই এবং 181 বাইটে প্রবেশ করে ।

//bind into new tile function and change m(ove) variable when a tile was moved
b = a.addRandomTile.bind(a);
m = !1;
a.addRandomTile = function() { m = !0; b(); };
//number of move fails
mfs = 0;
setInterval(function() {
  //set global moved tracking variable to false
  m = !1;
  a.move(Math.floor(4 * Math.random()));
  m || mfs++;
  //restart after 10 moves failed
  10 < mfs && (mfs = 0, a.restart());
}, 250);

স্কোরিং এবং ফলাফল

আমি সরাসরি এক ঘন্টা স্নিপেটগুলি চালাচ্ছি এবং সেরা স্কোর গণনা করব। প্রকৃতপক্ষে এমন একটি সম্ভাবনা রয়েছে যা randombotউপরের দিক থেকে এটি জিততে পারে তবে এটির পরাজিত করার জন্য 1 ঘন্টা যথেষ্ট হওয়া উচিত:

  • কিং Bottomstacker VII : 9912
  • রানী Bottomstacker V : 9216
  • যুবরাজ Bottomstacker II : 7520
  • প্রভু Bottom and Right : 6308
  • কৃষক Randombot : 1413
  • Bottomstacker IV: 12320 এক ব্যবধানে (250 মিমি মধ্যে) দুটি পদক্ষেপের জন্য অযোগ্য

প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী

  • কেন এই চ্যালেঞ্জটি টার্মিনালের মাধ্যমে ভাষা অজ্ঞানী নয়?
    • সরল কারণেই এটি আরও মজাদার। কোনও গ্রাফিক নিজেই গ্রাফিক খেলতে দেখা সংখ্যার কনটোল থুথু দেখার চেয়ে অনেক বেশি মন্ত্রমুগ্ধ। এমনকি কোনও জাভাস্ক্রিপ্ট না জেনেও আপনি এই চ্যালেঞ্জটিতে যোগ দিতে সক্ষম হবেন কারণ এটি প্রাথমিকভাবে ভাষার বৈশিষ্ট্যগুলি সম্পর্কে নয় ( কোডটি ছোট করার জন্য কেবল এই সরঞ্জামটি ব্যবহার করুন )

3
মনে হচ্ছে এটি এখান থেকে সেরা অ্যালগরিদমের জাভাস্ক্রিপ্ট বাস্তবায়নগুলির একগুচ্ছ হয়ে শেষ হবে , না?
জেসন সি 16

2
-1 ...best score after an hour will count... মাত্র এক ঘন্টা কেন?
ব্যবহারকারী 80551

3
যাই হোক না কেন, আমি প্রস্তাব দিচ্ছি, ন্যায়বিচারের নামে, প্রতিটি উত্তর পরীক্ষার জন্য এলোমেলো সংখ্যা জেনারেটরকে একইভাবে বীজ দেওয়া, এবং সেই কারণে গণনার বিভিন্নতা নির্মূল করতে একটি রান (1 ঘন্টা / 250 এমএস =) 14,400 চালানো চালানোও টাইমিং অমূলকতা। কমপক্ষে ফলাফলগুলি আরও কিছুটা নির্বিচারিক এবং কোনও কোটের উপযুক্ত worthy
জেসন সি 16

1
750 বাইট বা 550 বাইট?
পিটার টেলর

2
খুব সীমাবদ্ধ। 750 বাইট, 1 ঘন্টা, জাভাস্ক্রিপ্ট।
TheDoctor

উত্তর:


4

আমি জাভাস্ক্রিপ্ট কোড করতে পারি না, তাই আমি আপনার উত্তর চুরি করেছি।

//bind into new tile function and change m(ove) variable when a tile was moved
b = a.addRandomTile.bind(a);
m = !1;
a.addRandomTile = function() { m = !0; b(); };
//number of move fails
mfs = 0;
c=1;
setInterval(function() {
  //set global moved tracking variable to false
  m = !1;
  a.move(c)
  c++
  if (c>3) {c=1}
  m || mfs++;
  //restart after 10 moves failed
  10 < mfs && (mfs = 0, a.restart());
}, 250);

এটি কৌশলটিও আমি ব্যবহার করি।

সম্পাদনা: দুর্দান্ত, এটি আমার মেশিনে প্রায় 5 মিনিটের পরে আপনার স্কোরকে পরাস্ত করে: ডি

সম্পাদনা: কেবল একবারের পরিবর্তে দুবার নীচে নামতে ভুলে গেছেন, আপনার এই কোডটি ব্যবহার করা উচিত:

a = new GameManager(4, KeyboardInputManager, HTMLActuator, LocalStorageManager);
//bind into new tile function and change m(ove) variable when a tile was moved
b = a.addRandomTile.bind(a);
m = !1;
a.addRandomTile = function() { m = !0; b(); };
//number of move fails
mfs = 0;
c=1;
setInterval(function() {
  //set global moved tracking variable to false
  m = !1;
  if (c<=3) {n=c}
  else {n=2}
  a.move(n)
  c++

  if (c>4) {c=1} 
  m || mfs++;
  //restart after 10 moves failed
  10 < mfs && (mfs = 0, a.restart());
}, 250);

এছাড়াও, এটিতে একটি বাগ রয়েছে যা এটি যখন প্রয়োজন হয় না তখন এটি পুনরায় চালু হয়, তবে কীভাবে এটি ঠিক করবেন তা আমি নিশ্চিত নই। সম্পাদনা: এটির বর্তমানে 3116 (3 মিনিটের পরে) এর একটি উচ্চ স্কোর রয়েছে। আমি মনে করি এই অ্যালগরিটমটি কেবল এলোমেলো পদক্ষেপের চেয়ে ভাল বলা নিরাপদ।

নতুন সংস্করণ সম্পাদনা করুন:

a = new GameManager(4, KeyboardInputManager, HTMLActuator, LocalStorageManager);
//bind into new tile function and change m(ove) variable when a tile was moved
b = a.addRandomTile.bind(a);
m = !1;
a.addRandomTile = function() { m = !0; mfs=0; b(); };
//number of move fails
mfs = 0;
c=1;
setInterval(function() {
  //set global moved tracking variable to false
  m = !1;
  if (c<=3) {n=c}
  else {n=2}
  a.move(n)
  c++
  if (c>4) {c=1} 
  m || mfs++;
  //up after 5 moves
  5 < mfs && (a.move(0));
  //restart after 10 moves failed
  10 < mfs && (mfs = 0, a.restart());
}, 250);

সম্পাদনা: অন্য একটি নতুন সংস্করণ, এটি উপরে উঠে যাওয়ার পরে সরাসরি নীচে চলে আসে।

a = new GameManager(4, KeyboardInputManager, HTMLActuator, LocalStorageManager);
//bind into new tile function and change m(ove) variable when a tile was moved
b = a.addRandomTile.bind(a);
m = !1;
a.addRandomTile = function() { m = !0; mfs=0; b(); };
//number of move fails
mfs = 0;
c=1;
setInterval(function() {
  //set global moved tracking variable to false
  m = !1;
  if (c<=3) {n=c}
  else {n=2}
  a.move(n)
  c++
  if (c>4) {c=1} 
  m || mfs++;
  //up after 5 moves
  5 < mfs && (a.move(0), c=4);
  //restart after 10 moves failed
  10 < mfs && (mfs = 0, a.restart());
}, 250);

সম্পাদনা: আপডেট: এটি 12596 এর সুন্দর পাগল স্কোর দিয়ে আমার ব্যক্তিগত রেকর্ডটি ভেঙেছে।

সম্পাদনা: আরে, আমি তল স্ট্যাকার: ডি আরও:

b=a.addRandomTile.bind(a);m=!1;a.addRandomTile=function(){m=!0;mfs=0;b()};mfs=0;c=1;setInterval(function(){m=!1;n=3>=c?c:2;a.move(n);c++;4<c&&(c=1);m||mfs++;5<mfs&&(a.move(0),c=4);10<mfs&&(mfs=0,a.restart())},250);

(আসলে কোনও পরিবর্তন নয়, কেবল সংক্ষেপিত।)

5 ম বারের কবজ? নিশ্চিত না. যাইহোক:

//bind into new tile function and change m(ove) variable when a tile was moved
b = a.addRandomTile.bind(a);
m = !1;
a.addRandomTile = function() { m = !0; mfs=0; b(); };
//number of move fails
mfs = 0;
c=1;
setInterval(function() {
  //set global moved tracking variable to false
  m = !1;
  if (c<=3) {n=c}
  else {n=2}
  a.move(n)
  c++
  if (c>4) {c=1} 
  if (c==0) {c=4}
  m || mfs++;
  //up after 5 moves
  5 < mfs && (c=0);
  //restart after 10 moves failed
  10 < mfs && (mfs = 0, a.restart());
}, 250);

এবং:

b=a.addRandomTile.bind(a);m=!1;a.addRandomTile=function(){m=!0;mfs=0;b()};mfs=0;c=1;setInterval(function(){m=!1;n=3>=c?c:2;a.move(n);c++;4<c&&(c=1);0==c&&(c=4);m||mfs++;5<mfs&&(c=0);10<mfs&&(mfs=0,a.restart())},250);

আর একটি নতুন সংস্করণ:

a = new GameManager(4, KeyboardInputManager, HTMLActuator, LocalStorageManager);
//bind into new tile function and change m(ove) variable when a tile was moved
b = a.addRandomTile.bind(a);
m = !1;
a.addRandomTile = function() { m = !0; mfs=0; b(); };
//number of move fails
mfs = 0;
c=1;
setInterval(function() {
  //set global moved tracking variable to false
  m = !1;
  if (c<=3) {n=c}
  else {n=2}
  a.move(n)
  c++
  if (c>4) {c=1} 
  if (c==0) {c=4}
  m || mfs++;
  //up after 5 moves
  5 < mfs && (c=0);
  //Found this in the source, as the criteria for a gameover. Might as well reset then ;)
  if (!a.movesAvailable()) {
      a.restart()
  }

}, 250);

এবং:

a=new GameManager(4,KeyboardInputManager,HTMLActuator,LocalStorageManager);b=a.addRandomTile.bind(a);m=!1;a.addRandomTile=function(){m=!0;mfs=0;b()};mfs=0;c=1;setInterval(function(){m=!1;n=3>=c?c:2;a.move(n);c++;4<c&&(c=1);0==c&&(c=4);m||mfs++;5<mfs&&(c=0);a.movesAvailable()||a.restart()},250);

(আমি আশা করি এটি গেমওভারের পর্দার পিছনে যে সমস্যাটি অব্যাহত রয়েছে এটি খুব বেশি নয়? আমি মনে করি আপনি a.over=0প্রায়শই মৃত্যুদণ্ড কার্যকর হওয়া এমন কোনও জায়গা যুক্ত করতে পারেন I'll আমি এটি কোনও দিন খুঁজে বের করব))

সম্পাদনা (আবার): আমি স্ট্যান্ডার্ড গেমওভারের উপায়টি ফেলে দিয়েছি এবং জিনিসগুলি করার পুরানো পথে ফিরে এসেছি। আমি এখন একটি সংযোজন পরীক্ষা করছি যা 16 বা তার বেশি টাইল দুটি একসাথে থাকলে সর্বদা মার্জ হয়ে যায়:

a = new GameManager(4, KeyboardInputManager, HTMLActuator, LocalStorageManager);
b = a.addRandomTile.bind(a);
m = !1;
a.addRandomTile = function() {
  m = !0;
  mfs = 0;
  b();
};
mfs = 0;
c = 1;
setInterval(function() {
  m = !1;
  l = 8;
  for (x = 0;x < 4;x++) {
    for (y = 0;y < 4;y++) {
      t1 = a.grid.cellContent({x:x, y:y});
      t2 = a.grid.cellContent({x:x, y:y + 1});
      t3 = a.grid.cellContent({x:x + 1, y:y + 1});
      if (t1 & t2) {
        if (t1.value == t2.value) {
          if (t1.value > l) {
            l = t1.value;
            c = 2;
          }
        }
        if (t1 & t3) {
          if (t1.value == t2.value) {
            if (t1.value > l) {
              l = t1.value;
            }
          }
        }
      }
    }
  }
  if (c <= 3) {
    n = c;
  } else {
    n = 2;
  }
  a.move(n);
  c++;
  if (c > 4) {
    c = 1;
  }
  if (c == 0) {
    c = 4;
  }
  m || mfs++;
  5 < mfs && (c = 0);
  10 < mfs && (mfs = 0, a.restart());
}, 250);

যোগ mfs=0ভিতরে addRandomTile, যে ভাবে এটি একটি সফল পদক্ষেপ পর কাউন্টিং পুনরায় চালু হবে।
ডেভিড মুলদার

এবং এখন এটি খেলতে দেখাতে বলেছে, এটি আমার প্রত্যাশার চেয়ে ভাল করছে :): ডি
ডেভিড মুলদার

সবেমাত্র লক্ষ্য করা গেছে যে আপনি শেষ 2 সংস্করণে একটি ব্যবধানে দুটি পদক্ষেপ নিচ্ছেন, সুতরাং আমার রেকর্ড করা 12320 স্কোরকে অযোগ্য ঘোষণা করতে হয়েছিল। এবং হ্যাঁ, আমার একরকম নাম প্রয়োজন ছিল: পি
ডেভিড মুলদার

পুনঃটুইট (এটি কোথায় ঘটেছিল সে সম্পর্কে কি আপনার কোনও ধারণা আছে, যাতে আমি এটি সংশোধন করতে পারি?)
উস

13
আপনার উত্তরটি নতুন সংস্করণে পূর্ণ , দয়া করে পুরানো কোডটি সরিয়ে দিন। অথবা সংস্করণগুলির মধ্যে পার্থক্য ব্যাখ্যা করুন। প্রাচীন কোড এখনও "সম্পাদনা" লগ মধ্যে অ্যাক্সেসযোগ্য হবে কেউ যদি আগ্রহী।
আওয়ামী লীগ

3

ডান এবং ডাউন বট: 345 বাইট

সংক্ষিপ্ত সংস্করণ

b=a.addRandomTile.bind(a);m=!1;t=250;d=!0;a.addRandomTile=function(){m=!0;b();d&&setTimeout(c,t)};c=function(){d=!1;a.move(2);setTimeout(function(){m=!1;d=!0;a.move(1);m||setTimeout(function(){a.move(0);m?a.grid.cells[3][0]&&a.grid.cells[3][3]&&setTimeout(function(){a.move(1)},t):setTimeout(function(){a.move(3);m||a.restart()},t)},t)},t)};c();

দীর্ঘ সংস্করণ

a = new GameManager(4, KeyboardInputManager, HTMLActuator, LocalStorageManager);
b = a.addRandomTile.bind(a);
m = !1;
t = 250;
d = !0;
a.addRandomTile = function() {
  m = !0;
  b();
  d && setTimeout(c, t);
};
c = function() {
  d = !1;
  a.move(2);
  setTimeout(function() {
    m = !1;
    d = !0;
    a.move(1);
    m || setTimeout(function() {
      a.move(0);
      m ? a.grid.cells[3][0] && a.grid.cells[3][3] && setTimeout(function() {
        a.move(1);
      }, t) : setTimeout(function() {
        a.move(3);
        m || a.restart();
      }, t);
    }, t);
  }, t);
};
c();

শব্দসমূহে

নীচে সরান, তারপরে ডানদিকে, যদি আপনি নড়াচড়া করতে না পারেন, উপরের দিকে (অথবা আপনি না পারলে, বাম দিকে সরাতে পারেন), উপরের ডান এবং নীচের অংশের উভয় কোণ পূরণ করা থাকলে ডানদিকে সরান অন্যথায় শুরু করুন।

বর্তমান হাইস্কোর

আমার নিজের সেরা স্কোর ছিল 68 766868, তবে এটি তার চেয়ে অনেক বেশি গতিতে চালিত হয়েছিল t=250(এবং এভাবে পরোক্ষভাবে এক ঘণ্টারও বেশি দীর্ঘ)।


এই স্ক্রিপ্টটির পালা প্রতি একাধিক চালনা করার প্রবণতা রয়েছে।
jdstankosky

3

আজ সকালে কোনওভাবে আমি এই পুরানো প্রতিযোগিতাটি পেরিয়ে এসেছি এবং যেহেতু আমি 2048 ভালবাসি, তাই আমি এআইকে ভালবাসি, এবং জেএস বর্তমানে আমি যে কয়েকটি ভাষা ভালভাবে জানি সেগুলির মধ্যে একটি, আমি বুঝতে পেরেছিলাম যে আমি এটি একটি শট দেব।

লোভীবোট ( 607 536 বাইট)

সংক্ষিপ্ত সংস্করণ:

C=function(x,y){return a.grid.cellContent({x:x,y:y})},h=[[1,3,2,0],[2,1,3,0]],V='value',A='addRandomTile';a=new GameManager(4,KeyboardInputManager,HTMLActuator,LocalStorageManager);b=a[A].bind(a);m=!1;f=d=X=Y=0;a[A]=function(){m=!0;f=0;b()};setInterval(function(){m=!1;for(var c=X=Y=0;4>c;c++)for(var e=0;4>e;e++)if(u=C(c,e),!!u){for(q=e+1;4>q;){v=C(c,q);if(!!v){u[V]==v[V]&&(Y+=u[V]);break}q++}for(q=c+1;4>q;){v=C(q,e);if(!!v){u[V]==v[V]&&(X+=u[V]);break}q++}}f<4&&a.move(h[X>Y+4?0:1][f]);m&&(f=0);m||f++;15<f&&(f=0,a.restart())},250);

দীর্ঘ সংস্করণ (পুরানো):

a = new GameManager(4, KeyboardInputManager, HTMLActuator,    LocalStorageManager);
b = a.addRandomTile.bind(a);
m = !1;
f = d = X = Y = 0;
a.addRandomTile = function() { m = !0; f = 0; b(); };
setInterval(function() {
    m = !1;
    X = Y = 0;

    for(var x=0;x<4;x++) {
        for(var y=0;y<4;y++) {
            u = a.grid.cellContent({x:x, y:y});
            if(u==null){continue;}
            q = y+1;
            while(q < 4) {
                v = a.grid.cellContent({x:x,y:q});
                if(v!=null){
                    if(u.value==v.value){
                        Y+=u.value;
                    }
                    break;
                }
                q++;
            }
            q = x+1;
            while(q < 4) {
                v = a.grid.cellContent({x:q,y:y});
                if(v!=null){
                    if(u.value==v.value){
                        X+=u.value;
                    }
                    break;
                }
                q++;
            }
        }
    }

    if(X>=Y){
        if(f==0)
            a.move(1);
        else if(f==1)
            a.move(3);
        else if(f==2)
            a.move(2);
        else if(f==3)
            a.move(0);
    } else {
        if(f==0)
            a.move(2);
        else if(f==1)
            a.move(0);
        else if(f==2)
            a.move(1);
        else if(f==3)
            a.move(3);
    }
    if(m)f=0;
    m || f++;
    if(15 < f) f=0,a.restart();
}, 250);

দীর্ঘ সংস্করণটি মোটেও গল্ফ করা হয়নি (পাতলা নামগুলি সঙ্কুচিত করা ব্যতীত), তাই এটি পঠনযোগ্য হওয়ার পরেও কিছুটা ছোট করা যেতে পারে। সংক্ষিপ্ত সংস্করণটি ক্লোজার সংকলক (লিঙ্কটির জন্য ধন্যবাদ!) ব্যবহার করে তৈরি করা হয়েছিল, যা 650-এ শেষ হয়েছিল part আমার দিক থেকে কিছু কাস্টম সংশোধন করে, আমি অন্য 434 টি বিট ছাঁটাই করতে সক্ষম হয়েছি ।

মূলত, এটি সম্ভাব্য পদক্ষেপগুলির জন্য গ্রিডের মাধ্যমে অনুসন্ধান করে এবং যখনই এটি একটি খুঁজে পায়, তার মূল্যটি অনুভূমিক বা উল্লম্ব মোটের সাথে যোগ করে। প্রতিটি সম্ভাব্য পদক্ষেপের সন্ধানের পরে, এইচ বা ভি মোট বেশি হলে এবং ইতিমধ্যে যে দিকনির্দেশ চেষ্টা করেছে সেগুলির উপর ভিত্তি করে এটি নির্ধারণ করে যে এটি কোন দিকে চলেছে move ডান এবং ডাউন প্রথম পছন্দ।

এই দিকে ফিরে তাকালে, আমি এখন বুঝতে পারি যে দুটিই যদি শূন্য হয় তবে সেদিকে টাইলগুলি স্লাইড করার প্রথম প্রচেষ্টাটি সফল হওয়ার গ্যারান্টিযুক্ত। সম্ভবত আমি এর ভিত্তিতে প্রান্তে সিদ্ধান্ত গ্রহণ বিভাগটি সরল করতে পারি।

আমি এই প্রোগ্রামটি এক ঘন্টা চালিয়ে রেখেছি এবং উচ্চ স্কোর দিয়ে শেষ করেছি 6080। যাইহোক, ট্রায়াল রানগুলির একটিতে (প্রাক-মিনিফিকেশন), এটি 6492আমার ব্যক্তিগত সেরা থেকে মাত্র 128 এর চেয়ে বেশি স্কোর পরিচালনা করেছে 6620। এর যুক্তিটি মাঝে মাঝে বাম-ডাউন থেকে সরে আসার মাধ্যমে ব্যাপকভাবে উন্নত হতে পারে, কারণ সংখ্যাগুলি এভাবে পাইল করার প্রবণতা রয়েছে:

 2  4  8 16
 4  8 16 32
 8 16 32 64
16 32 64 128

( সম্পাদনা: আমি এটিকে আরও কিছুক্ষণ চলতে দিয়েছি এবং এটি কিছু 7532পয়েন্ট পরিচালনা করেছে arn ডার্ন, আমার প্রোগ্রামটি আমার চেয়ে স্মার্ট .... ....)

আরও একটি আকর্ষণীয় টিডবিট: ব্যবহারযোগ্য কিছু তৈরি করার জন্য আমার এক চটকদার চেষ্টাতে, কোনওরকমে এটি শেষ হয়েছে যাতে যে কোনও সময় কোনও দুটি টাইল একই সারি বা কলামে ছিল, সেগুলি একত্রিত করা হয়েছিল। এটি আকর্ষণীয় উন্নতির দিকে নিয়ে যায় কারণ এলোমেলো 2s বা 4s বারবার সর্বোচ্চ টাইলের সাথে একত্রিত হয়ে প্রতিবার দ্বিগুণ হয়। একবার, এটি বন্ধ করে দেওয়ার আগে 15 সেকেন্ডে 11,000 এরও বেশি স্কোর করতে সক্ষম হয়েছিল .... এক্সডি

উন্নতির জন্য কোন পরামর্শ খুব স্বাগত!


1

উইন্ডশীল্ড সম্মার্জনী: 454 বাইট

কেবল ডানদিকে, উপরে, বাম দিকে, উপরে ... পুনরাবৃত্তি করা (গাড়িটিতে থাকা সম্মার্জনীর মতো) যদি এটি জ্যাম না হয়। যদি এটি জ্যাম হয়ে যায়, তবে এটি ওয়াইপারগুলি বন্ধ করে তাদের আবার চালু করার চেষ্টা করবে turn এক ঘন্টার মধ্যে আমার সর্বোচ্চ স্কোর ছিল 12,156 - তবে, বেশিরভাগ স্কোর কোথাও 3k - 7k এর মধ্যে।

এটি প্রতিটি চেষ্টার পরে স্কোরকে কনসোলে আউটপুট দেবে।

var move = !1;
var bad = 0;
var c = 0;
var b = a.addRandomTile.bind(a);
a.addRandomTile = function() {
    b();
    move=!0;
    bad=0;
}
setInterval(function() {
    if (!move) bad++;
    if (c>3) c=0;
    move = !1;
    if (c==3) {a.move(0);c++;}
    if (c==2) {a.move(3);c++;}
    if (c==1) {a.move(0);c++;}
    if (c==0) {a.move(1);c++;}
    if (bad>10) {a.move(2);}
    if (!a.movesAvailable()) {console.log("Score: "+a.score);a.restart();}
}, 250);

0

UpAndLeftBot

শিরোনামের পরামর্শ অনুসারে, ডেভিড মুল্ডারের কাজ চুরি করে এবং কয়েকটি নম্বর অদলবদল করে উপরে বাম দিকে চলে যায় (জাভাস্ক্রিপ্ট সম্পর্কে আমি জ্যাক জানি না, তাই আমি সবচেয়ে ভাল করতে পারি) এটি।

a = new GameManager(4, KeyboardInputManager, HTMLActuator, LocalStorageManager);
b = a.addRandomTile.bind(a);
m = !1;
t = 250;
d = !0;
a.addRandomTile = function() {
  m = !0;
  b();
  d && setTimeout(c, t);
};
c = function() {
  d = !1;
  a.move(0); // a.move(2)
  setTimeout(function() {
    m = !1;
    d = !0;
    a.move(3); // a.move(1)
    m || setTimeout(function() {
      a.move(2);  //a.move(0)
      m ? a.grid.cells[3][0] && a.grid.cells[3][3] && setTimeout(function() {
        a.move(3); // a.move(1)
      }, t) : setTimeout(function() {
        a.move(1);  // a.move(3)
        m || a.restart();
      }, t);
    }, t);
  }, t);
};
c();

ডেভিড মুল্ডারের স্ক্রিপ্টের মতো এটিও একবারে একবারে একবারে একাধিক পদক্ষেপ সম্পাদন করে।
jdstankosky
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.