এটি লাইফ, জিম, তবে আমরা এটি জানি not


58

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

এনজির্নহীন বিমান

একটি শূন্য প্লেয়ার খেলা ... আজ অবধি আপনাকে এমন একটি প্রোগ্রাম লিখতে হবে যা গেম অফ লাইফ খেলবে - এবং এটি জয় করার জন্য খেলবে, হিল-স্টাইলের কিং। আপনার প্রতিপক্ষ (একক) অবশ্যই এটি করার চেষ্টা করে। বিজয়ী হয় হয় কোনও জীবন্ত কোষের সাথে শেষ বট, অথবা 10000 প্রজন্মের পরে সর্বাধিক লাইভ সেল সহ খেলোয়াড়।

খেলার নিয়ম

নিয়মগুলি প্রায় সাধারণ (বি 3 / এস 23) লাইফের মতো:

  • দু'জনের চেয়ে কম বন্ধুত্বপূর্ণ প্রতিবেশী সহ একটি লাইভ সেল অনাহারে মারা যায়।
  • দুই বা তিনটি বন্ধুত্বপূর্ণ প্রতিবেশী সহ একটি লাইভ সেল বেঁচে থাকে।
  • তিনজনেরও বেশি বন্ধুত্বপূর্ণ প্রতিবেশী সহ একটি লাইভ সেল অতিরিক্ত জনসংখ্যার কারণে মারা যায়।
  • একই খেলোয়াড়ের ঠিক তিনটি প্রতিবেশী নিয়ে একটি মৃত কোষ সেই খেলোয়াড়ের জন্য লড়াই করার জন্য জীবিত আসে তবে শর্ত নেই যে কোনও শত্রু প্রতিবেশী নেই

... তবে প্রতিটি প্রজন্মের পরে, আপনি এবং আপনার প্রতিপক্ষ উভয়ই হস্তক্ষেপ করার সুযোগ পান। আপনার পক্ষে লড়াই করার জন্য আপনি সর্বোচ্চ 30 টি সেল জেগে উঠতে পারেন। (কে প্রথমে যায় তা সার্ভার দ্বারা সিদ্ধান্ত নেওয়া হয়))

বোর্ডটি একটি (x, y) কক্ষের বর্গক্ষেত্র। প্রাথমিকভাবে সমস্ত স্কোয়ার মারা গেছে। সীমানা চারপাশে মোড়ানো হয় না (এটি টরাস-আকৃতির পৃথিবী নয়) এবং স্থায়ীভাবে মৃত dead

এটি ব্যাটলবটস এবং কোর ওয়ার্সের চেতনার প্রতিযোগিতা । একটি কেন্দ্রীয় সার্ভার রয়েছে যা বট চালাবে এবং এটি এখানে পাওয়া যাবে

প্রোটোকল

আখরার সার্ভারটি আর্গের মাধ্যমে যোগাযোগ করা একটি সাধারণ জেএসএন প্রোটোকল বলে

যেখানে মানগুলি একটি JSON এনকোডেড স্ট্রিং

  • y_size: টাইলস বিলুপ্ত হওয়ার পূর্বে সর্বাধিক y টি কর্ড
  • x_size: টাইলস বিলুপ্ত হওয়ার আগে সর্বাধিক এক্স কর্ড
  • tick_id: বর্তমান টিক নম্বর
  • board: আকারে কী এর মাধ্যমে একটি অভিধান '(Y, এক্স)' এবং ফর্ম মান bot_id(int-)
  • bot_id: এই আইডি সহ বোর্ডে টাইলগুলি আপনার

উদাহরণ:

 {"y_size":2000,"x_size":2000,"board":{},"bot_id":1,"tick_id":1}

সার্ভারকে আপনার পছন্দটি বলা হচ্ছে:

  • সার্ভারটি আপনার রঙে ফিরতে টাইলগুলির একটি তালিকা প্রেরণ করুন।
  • যারা খালি রয়েছে কেবল তাদেরই পরিবর্তন করা হবে
  • নেস্টেড কর্ডগুলি তালিকা ফর্ম্যাট
    • [[0,0], [0,1], [100,22]...]

দ্রষ্টব্য: আপনার বটকে মোটেও টাইলগুলি আপডেট করতে হবে না - সার্ভার নিজেই আপডেট করে

প্রতিযোগিতার নিয়ম

  • যদি আপনার বাস্তবায়ন প্রোটোকলটি অনুসরণ করতে ব্যর্থ হয়, তবে এটির পালাটি বাজেয়াপ্ত হবে; সার্ভার অবস্থায় কোনও পরিবর্তন অনুমান করবে
  • আপনাকে আখেরা সার্ভারে কোনও ত্রুটিটি ইচ্ছাকৃতভাবে গ্রহণ করার অনুমতি নেই।
  • আপনার এআইকে বুদ্ধিমান সময়ে চলার বিষয়ে সিদ্ধান্ত নিতে দিন। আপনার পরবর্তী পদক্ষেপটি যথাসম্ভব দ্রুত প্রেরণ করুন।
  • অবশেষে, দয়া করে সার্ভারে সুন্দর হন। এটি আপনার উপভোগের জন্য রয়েছে।
  • এই নিয়মগুলি না মানলে অযোগ্যতা হতে পারে।
  • টাইয়ের ইভেন্টে, উভয় খেলোয়াড়ের মোট জুটিতে 1 টি জয় রয়েছে

নিয়ন্ত্রক নিজেই চালাচ্ছেন

নিয়ামকের জন্য উত্সটি এখানে পাওয়া যাবে । নিয়ামক চালানোর 2 উপায় রয়েছে:

  • প্রতিযোগিতা মোড (টার্মিনাল)
    • সাথে সেটআপ করুন python3 get_answers.py
    • প্রতিটি বট একে অপরের বিরুদ্ধে এটি তৈরি করে একটি সমস্ত ভি সমস্ত প্রতিযোগিতা চালান।
  • পরীক্ষার মোড (জিইউআই)
    • চালান python3 nice_gui.py
    • ক্লিক Pull Answers
    • আপনি যদি পোস্ট করার আগে এটির নিজের উত্তরটি যুক্ত করতে চান তবে File -> Add manual answerফাইলটি ক্লিক করুন এবং সন্ধান করুন এবং এতে লেখা ভাষাটি চয়ন করুন।
    • যদি আপনার ভাষা আমাকে পিং না করে থাকে এবং আমি এটি সার্ভারে ইনস্টল করার চেষ্টা করব তবে আমি এটি চালাব (ইনস্টলেশন ও চলমান নির্দেশাবলীও দুর্দান্ত লাগবে!)
    • একে অপরের বিরুদ্ধে খাঁজতে 2 বট বেছে নিন
    • ক্লিক Run
    • খেলাটি দেখুন ...
  • স্থাপন
    • পাইথন 3 প্রয়োজন
    • get_answers এর জন্য bs4 এবং html5lib দরকার
    • কন্ট্রোলারের .sh ফাইলগুলি চালনার জন্য একটি উপায় প্রয়োজন (উইন্ডোগুলিতে MinGW)

অ্যাপ্লিকেশন উদাহরণ চিত্র

স্কোরিং

সর্বাধিক বিজয়ী বট 12/07/2016(12 জুলাই) থেকে শুরু হয়েছে (14/07/2016 14 জুলাই, কীভাবে বট চালানো যায় তা কার্যকর করতে পারেনি)।


নিয়ন্ত্রক / গুইয়ের সাহায্যে এই চ্যাট রুমে জিজ্ঞাসা করা যেতে পারে


এই প্রশ্নটি ২০১৪ সাল থেকে বিকাশে রয়েছে এবং এটি স্যান্ডবক্সে সর্বাধিক উন্নত প্রশ্ন ছিল। বিশেষ ধন্যবাদ যায় Nauta চরা (মূল লেখক এবং ধারণা), PPCG চ্যাট (মন্তব্য এবং সাহায্যের) এবং যারা মন্তব্য স্যান্ডবক্স পোস্টে (আরও মন্তব্য)।


25
হু, আমি ভেবেছিলাম এটি এটিকে কখনই স্যান্ডবক্স থেকে বের করে দেবে না। গ্রেট!
লুইস মেন্ডো

টাইপো: 12/06/2016 (12 জুলাই)
লুইস মেন্ডো

4
+1 টি। এই দুর্দান্ত প্রশ্নটি স্যান্ডবক্সের বাইরে আনার জন্য আপনি এইডি পুরষ্কারের যোগ্য!
agtoever

1
@ কেভিনলউ-নোট কেনি ওহ, ঠিক আছে। আপনি একটি ফাইল একটি কমান্ড চালাতে পারেন?
Rɪᴋᴇʀ

1
@ ম্যাজেন্টা যখন আমি তাদের পেয়েছি (এটি একটি ক্রমাগত খোলা ট্যাব থাকা সত্ত্বেও আমি এটি সম্পর্কে সম্পূর্ণরূপে ভুলে গিয়েছি), এখন আমি এটি চালাচ্ছি
ব্লু

উত্তর:


4

পাইথন 3, বিস্ফোরক

সেখানে ইতিমধ্যে কোনও ব্লক রয়েছে কিনা তা বিবেচনা করেই এই জায়গার চারপাশে ছোট বিস্ফোরক রাখুন।

from random import randint
import sys,json,copy
q=json.loads(sys.argv[1])
x=q["x_size"];y=q["y_size"];F=[[0,1],[1,0],[1,1],[1,2],[2,0],[2,2]];D=[]
for g in [0]*5:
 X=randint(0,x);Y=randint(0,y);A=copy.deepcopy(F)
 for C in A:C[0]+=Y;C[1]+=X
 D+=A
print(D)

1
আমি বিশ্বাস করতে পারি না যে আমার সমস্ত কাজ অনির্দিষ্টকালের বিকাশের জন্য ব্লক-মেকিং সুইচ স্থাপনের পরে এবং বিশেষত বৃদ্ধি কাঠামো ধ্বংস করার জন্য নির্মিত একটি সিস্টেম পরে, একটি সাধারণ বিস্ফোরক-ভিত্তিক ব্যবস্থা আমার লড়াইয়ে মেরেছে: o
মান ইঙ্ক

আমি জানি না এটি কীভাবে হয়, কারণ যে কোনও কারণেই আমি নিয়ামক চালাতে পারি না।
ম্যাজেন্টা

8

রুবি, ইন্টারপটিংব্লকমেকার

ট্রেনিংবোটের মতো গ্লাইডারগুলিকে আরম্ভ করার পরিবর্তে, গোলকধাঁধার একটি এলোমেলো পয়েন্টে উইকিপিডিয়ায় উল্লিখিত একটি 5x5 ব্লক-মেকিং সুইচ মেশিন তৈরি করার চেষ্টা করে । তারপরে, এর অবশিষ্ট ক্রিয়াকলাপগুলির সাথে, এটি শত্রু বিন্দুগুলি সন্ধান করে এবং আপনার কোষগুলির সাথে নিকটবর্তী অঞ্চলে মরিচ দেওয়ার চেষ্টা করে যাতে তাদের বৃদ্ধি এবং সম্ভবত তাদের নিদর্শনগুলি গণ্ডগোল থেকে বাধা দেওয়ার চেষ্টা করে। আপনার ঘরগুলি পরবর্তী প্রজন্মের মধ্যে মারা যাবে, তবে তারা আপনার প্রতিপক্ষকে ধীর করতে কিছু বৃদ্ধিও বন্ধ করে দিয়েছে!

ভি 2: সময়সীমা হ্রাস করার চেষ্টা করার জন্য কিছুটা (?) অপ্টিমাইজ করা হয়েছে

v3: বাধা কোষের আক্রমণে কিছু কার্যকারিতা ব্যয় করে টাইমআউটগুলি আরও আটকাতে আমাদের নিজস্ব সেল অবস্থানগুলি প্রত্যাখ্যান করার আগে সক্রিয় ব্লকের একটি উপসেটের প্রাক-নমুনা করতে অনুকূল বাধা কোডটি অনুকূলিত করা হয়েছে।

require 'json'

class Range
  def product range2
    self.to_a.product range2.to_a
  end
end

args = JSON.parse(ARGV[0])
bot_id = args["bot_id"]
width  = args["x_size"]
height = args["y_size"]
board  = args["board"]

generator = [[2,2], [2,3], [2,6], [3,2], [3,5], [4,2], [4,5], [4,6], [5,4], [6,2], [6,4], [6,5], [6,6]]

targets = []

iterations = 50
gen_location = nil
while !gen_location && iterations > 0
  y = rand height - 9
  x = rand width  - 9
  temp = (0...9).product(0...9).map{|_y, _x| [y + _y, x + _x]}
  if temp.all?{|_y,_x| !board["(#{y},#{x})"]}
    gen_location = temp
    targets += generator.map{|_y, _x| [y + _y, x + _x]}
  end

  iterations -= 1
end

enemies = board.keys.sample(100).reject {|k| board[k] == bot_id}
interrupts = []
enemies.each do |location|
  y, x = location.scan(/\d+/).map &:to_i
  interrupts |= ((y-1)..(y+1)).product((x-1)..(x+1)).reject{|y, x| gen_location.include?([y,x]) || board["(#{y},#{x})"]}
end

targets += interrupts.sample(30 - targets.size)

puts JSON.dump(targets)

@ মিডিফিশ ধন্যবাদ, এটি ঠিক করে দিয়েছে! এখন একমাত্র সমস্যা হ'ল উইন্ডোজ কমান্ড লাইন কমান্ডগুলির হার্ডকডেড সীমা 8191 রয়েছে, যার অর্থ সিমুলেশনের একটি নির্দিষ্ট সময়ে কাটা জেএসএন স্ট্রিংকে পার্স করতে না পেরে বটগুলি ক্রাশ হয়ে যাবে। এটি একটি ওএসের সমস্যা, সুতরাং আমি অনুমান করি যে আমার বট পরীক্ষা করার জন্য আমাকে একটি লিনাক্স ক্লাউড বাক্স বা কোনও কিছুর সন্ধান করতে হবে ~
মান ইঙ্ক

@ মুদ্দিফিশ আমি ইতিমধ্যে উল্লেখ করেছি যে কমান্ড লাইন সীমাবদ্ধতার কারণে উইন্ডোজের সমস্যা রয়েছে, শেষ ত্রুটিটি ক্লাউড 9 এ ছিল যা সম্ভবত লিনাক্স বাক্স। আপনার লিনাক্স বাক্সে আমার বট ভাড়া কীভাবে (যেহেতু আপনি বোঝাচ্ছেন যে আপনার একটি রয়েছে)?
মান কালি

দেখা যাচ্ছে আমি এটি প্রতিশ্রুতিবদ্ধ ছিলাম না তবে সংখ্যাগুলি bot_scoreদেখায় যে প্রতিটি বোটের অন্য বটের বিরুদ্ধে কতটা জয়ের রয়েছে
ব্লু

ঠিক আছে, ধন্যবাদ! দুর্ভাগ্যক্রমে, ক্লাউড 9 প্রকৃতপক্ষে একটি জিইউআই নেই এবং উইন্ডোজ এখনও তার কমান্ডের সীমাটি অবশেষে ভঙ্গ না করে সিমুলেশন চালাতে পারে না, তবে কমপক্ষে আমি কীভাবে বটগুলি একে অপরের বিরুদ্ধে ভাড়া নিয়ে যায় তা সম্পর্কে একটি সংক্ষিপ্ত ধারণা পেয়েছিলাম। এছাড়াও, আমি আমার বটকে নিজের বিরুদ্ধে লড়াই শেষ অবধি দেখতে পাচ্ছি কারণ তারা একে অপরকে আক্রমণ করে এবং চরিত্রের সীমাটি ভেঙে দিতে যথেষ্ট বারণ করে, যদিও এটি মাঝে মাঝে
মান ইঙ্ক

4

পাইথন 2, প্রশিক্ষণবোট

কারণ এর প্রত্যেকের একটি দরকার!

import random, copy
import sys, json

args = json.loads(sys.argv[1])
bot_id = args["bot_id"]
x_size = args["x_size"]
y_size = args["y_size"]
cur_tick = args["tick_id"]
board = args["board"]

glider = [[1,2],[2,1],[0,0],[0,1],[0,2]]

x_add = random.randrange(x_size)
y_add = random.randrange(y_size)
new_glider = copy.deepcopy(glider)
for coord in new_glider:
    coord[0]+=y_add
    coord[1]+=x_add
move = new_glider
print json.dumps(move)

4

জাভা, ট্রোল বট

ট্রোল বট এটি সম্পর্কে চিন্তাভাবনা করেছে এবং সে বুঝতে পারে যে সে শত্রুদের যত্ন করে না। প্রকৃতপক্ষে তিনি এই ফ্যাক্টরিগুলিকে স্প্যাম করেছেন তাঁর মানচিত্রের সমস্ত লোককে এলোমেলোভাবে উত্পাদন করতে। কিছুক্ষণ পরে তিনি বুঝতে পারলেন যে কোনও অতিরিক্ত কোষ ঝাঁকুনিতে সবচেয়ে ভাল ব্যবহৃত হয়। চারটি কক্ষের এই ব্লকগুলি একসাথে আটকে থাকবে এবং তাদের ট্র্যাকগুলিতে গ্লাইডারগুলি থামিয়ে দেবে! তিনি ভাবেন না যে সে কেবল লড়াই করে। এছাড়াও তিনি ভার্বোজ অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের বড় সমর্থক। ট্রলটি ধরেও নিয়েছে যে কর্ডগুলি y, x ফর্ম্যাটে রয়েছে এবং তিনি পরীক্ষা করতে বলছেন। তাকে কেবল "ট্রলবোট.জাভা" নামক একটি ফাইলে রাখুন এবং সে সেট হয়ে যাবে!

package trollbot;

/**
 *
 * @author Rohans
 */
public class TrollBot{
public static class coord{
    public int x;
    public int y;
    public coord(int inX,int inY){
        x = inX;
        y = inY;
    }
    @Override
    public String toString(){
        return"["+x+","+y+"]";
    }
}
    /**
     * Input the JSON as the first cla
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       String JSON="{\"bot_id\":1,\"y_size\":1000,\"x_size\":1000,\"board\":{}}";
    String[] JArray=args[0].split(",");
       int botId=Integer.parseInt(JSON.charAt(10)+"");
    int xSize=Integer.parseInt(JArray[2].substring(JArray[2].indexOf(":")+1));
    int ySize=Integer.parseInt(JArray[1].substring(JArray[1].indexOf(":")+1));
    int[][] board = new int[xSize][ySize];//0 indexed
//todo: parse the board to get an idea of state
    String soldiers="[";    
//for now just ignore whats on the board and put some troll cells on
    //Attempts to create 3 10 cells factories of cells, hoping it does not place it on top of allies
    //Then puts random 2/2 blocks
  boolean[][] blockspam=new boolean[10][8];
  blockspam[7][1]=true;
  blockspam[5][2]=true;
  blockspam[7][2]=true;
  blockspam[8][2]=true;
  blockspam[5][3]=true;
  blockspam[7][3]=true;
  blockspam[5][4]=true;
  blockspam[3][5]=true;
  blockspam[1][6]=true;
  blockspam[3][6]=true;
  for(int z=0;z<3;z++){
     int xOffSet=(int) (Math.random()*(xSize-11));
     int yOffSet=(int) (Math.random()*(ySize-9));
     //stay away from edges to avoid odd interactions
     for(int i=0;i<blockspam.length;i++){
         for(int j=0;j<blockspam[i].length;j++){
             if(blockspam[i][j])
             soldiers+=new coord(j+yOffSet,i+xOffSet).toString()+",";
         }
     }
  }
  soldiers=soldiers.substring(0,soldiers.length()-1);
  for(int i=0;i<8;i++){
            int y=(int ) (Math.random()*(ySize-1));
            int x = (int) (Math.random()*(xSize-1));
      soldiers+=new coord(y,x).toString()+",";
                          soldiers+=new coord(y+1,x).toString()+",";
                          soldiers+=new coord(y,x+1).toString()+",";
                          soldiers+=new coord(y+1,x).toString()+",";

  }
  soldiers+="\b]";

  System.out.println(soldiers);
  //GO GO GO! Lets rule the board
    }

}

3

পাইথন 3, র‌্যান্ডমবট

এই বট বুদ্ধিমান সিদ্ধান্ত নিতে সমস্যা হয়, তবে কমপক্ষে এটি অন্য জিনিসের উপরে জিনিস রাখার চেষ্টা না করা জানে। এটি এলোমেলোভাবে গ্লাইডার, নৌকা, সি / ২ টি অর্থাগোনাল এস এবং 2x2 ব্লক তৈরি করবে বিভিন্ন ধরণের অভিযোজন সহ, এটি নিশ্চিত করে যে তারা স্থাপন করা হলে তারা অন্য কোনও কিছু, মিত্র বা শত্রুতে ওভারল্যাপিং করছে না।

এই বোট পরীক্ষা করা হয়নি, কারণ আমি জিইউআই চালানোর চেষ্টা করার সময় আমি সমস্ত ধরণের ত্রুটি পেয়েছি। এছাড়াও, আমি প্রশিক্ষণবোটটিকে বেস হিসাবে ব্যবহার করেছি এবং কেবল সম্পাদনা করেছি, তাই কোডের মধ্যে কোনও সাদৃশ্য সম্ভবত তার কারণেই।

import random, copy
import sys, json
args = json.loads(sys.argv[1])
bot_id = args["bot_id"]
x_size = args["x_size"]
y_size = args["y_size"]
board = args["board"]
occupied = [tuple(key) for key,value in iter(board.items())]
cellsleft=30
move=[]
choices = [[[1,2],[2,1],[0,0],[0,1],[0,2]],
           [[0,0],[0,1],[1,1],[1,0]],
           [[0,1],[1,0],[0,2],[0,3],[1,3],[2,3],[3,3],[4,3],[5,2],[5,0]],
           [[0,0],[1,0],[0,1],[2,1],[2,2]]]
while cellsleft>0:
    x_add = random.randrange(x_size)
    y_add = random.randrange(y_size)
    new_glider = copy.deepcopy(random.choice(choices))
    randomdirection = random.choice([[1,1],[1,-1],[-1,1],[-1,-1]])
    maxy=max([y[0] for y in new_glider])
    maxx=max([x[1] for x in new_glider])
    for coord in new_glider:
        coord[0]=coord[0]*randomdirection[0]+y_add
        coord[1]=coord[1]*randomdirection[1]+x_add
        cellsleft-=1
    set([tuple(x) for x in new_glider]) 
    if not set([tuple(x) for x in new_glider]) & (set(occupied)|set([tuple(x) for x in move])) and cellsleft>0:
        if min(y[0] for y in new_glider)<0: new_glider = [[y[0]+maxy,y[1]] for y in new_glider]
        if min(y[1] for y in new_glider)<0: new_glider = [[y[0],y[1]+maxx] for y in new_glider]
        move += new_glider
    elif set([tuple(x) for x in new_glider]) & (set(occupied)|set([tuple(x) for x in move])):
        cellsleft+=len(new_glider)

print(json.dumps(move))

1
জিইউআই সম্ভবত আপনার print(sys.argv[1])লাইনের 3 লাইনের কারণে ব্যর্থ হচ্ছে , যা আউটপুটটি ব্যর্থ করে দেয় (সিমুলেটরটি আপনাকে জাগাতে চান কেবল স্থানাঙ্কের স্ট্রিংটি প্রত্যাশা করে)। এছাড়াও, আপনার প্রোগ্রামের শেষ লাইনটি একটি বন্ধ প্যারেন অনুপস্থিত।
মান কালি

@ কেভিনলউ-নোট কেনি জিইউআই প্রশিক্ষণ বট এবং রুবি বটটিতেও ব্যর্থ হয়েছিল। যদিও আমি সেই লাইনটি সরিয়েছি এবং শেষের পেরেনে ফিরে এসেছি (আমি মনে করি যে এটির পরে একটি অনুলিপি-পেস্ট ত্রুটি ছিল)।
স্টিভেন এইচ।

আপনি কোন অপারেটিং সিস্টেমটি চালু আছেন এবং কমান্ড লাইনে এটি চালানোর সময় কোন ত্রুটিগুলি উপস্থিত হয়? বর্তমানে এটি একটি পরিচিত বাগ যা উইন্ডোজ সঠিকভাবে সিমটি পরিচালনা করতে পারে না কারণ কমান্ড লাইনটি প্রায় 8000
মান ইঙ্ক

@ কেভিনলউ-নোট কেনি আমি উইন্ডোজ 10 ব্যবহার করছি এবং আমি বেশ ভাল ত্রুটি পেয়েছি। প্রথমটি হ'ল বিউটিফুলসুপ সন্ধান করতে চাইছিল না html5lib, তারপরে সমস্ত বটযুক্ত ফোল্ডারটি খুঁজে না পাওয়া (আমাকে এই দুটির জন্যই কোডটি পরিবর্তন করতে হয়েছিল), এবং তখন থেকে পাইথন বট চালানো কোনও অ-0 রিটার্ন কোডের ফলস্বরূপ 1.
স্টিভেন এইচ।

যদি স্ক্রিনে অনেক বেশি সক্রিয় সেল থাকে তবে উইন্ডোজ এখনও কোড চালাতে পারে না ... তবে আপনার অন্যান্য ত্রুটিগুলির ক্ষেত্রে এটি হতে পারে কারণ ট্রেনিংবোট পাইথন 2 চায়?
মান কালি

3

পাইথন, গাই উইথ্যাগুন

সে লোক, সে বন্দুক পেয়েছে; তিনি পাগল. অন্য যে কী করছে সে সম্পর্কে তিনি বিনা বাধে তিনি সর্বত্র গ্লাইডার বন্দুক ফেলে দেন

import random, copy
import sys, json

args = json.loads(sys.argv[1])
bot_id = args["bot_id"]
x_size = args["x_size"]
y_size = args["y_size"]
tick_id = args["tick_id"]
board = args["board"]

start_squares = [[0,5],[2,5],[1,6],[2,6],
                 [35,3],[36,3],[35,4],[36,4]]
gun = [[11,5],[11,6],[11,7],
       [12,4],[12,8],
       [13,3],[13,9],
       [14,3],[14,9],
       [15,6],
       [16,4],[16,8],
       [17,5],[17,6],[17,7],
       [18,6],
       [21,3],[21,4],[21,5],
       [22,3],[22,4],[22,5],
       [23,2],[23,6],
       [25,1],[25,2],[25,6],[25,7]]

templates = [start_squares, gun]

def add_squares(pos, coords):
    new_squares = copy.deepcopy(coords)
    for coord in new_squares:
        coord[0]+=pos[0]
        coord[1]+=pos[1]
    return new_squares

def get_latest_pos():
    seed, template_id = divmod(tick_id, 2)
    random.seed(seed)
    cur_pos = [random.randrange(y_size),
               random.randrange(x_size)]
    cur_template = templates[template_id]
    try:
        return add_squares(cur_pos, cur_template)
    except IndexError:
        return []

move = get_latest_pos()

print json.dumps(move)

2

পাইথন 3, স্কয়ারবোট

স্কয়ার সর্বত্র রাখে - সম্ভবত

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

- প্রশিক্ষণবোট থেকে অ্যাডাপ্টেড

from random import randint
import sys,json,copy
args=json.loads(sys.argv[1])
x=args["x_size"];y=args["y_size"]
square=[[0,0],[0,1],[1,0],[1,1]];D=[]
for g in range(7):
 X=randint(0,x);Y=randint(0,y)
 A=copy.deepcopy(square)
 for C in A:C[0]+=Y;C[1]+=X
 D+=A
print(D)

যদিও এটি পরীক্ষা করতে আমার সমস্যা হচ্ছে



আমি নিশ্চিত করতে পারি যে এই বটটি আসলে যা বোঝাতে চেয়েছিল তা করে - এবং এটি আমাকে নিয়ামকটিতে একটি বাগ খুঁজে পেতে এবং ঠিক করতে সহায়তা করেছিল
নীল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.