কোড বটস 3: সমান্তরাল প্রোগ্রামিং এন্টিপ্যাটার্নস


13

ফিরে আসার জন্য স্বাগতম! আমি তৃতীয় কোডবট চ্যালেঞ্জ উপস্থাপন করতে আগ্রহী। এটি তৈরিতে দীর্ঘ সময় হয়েছে। এই চ্যালেঞ্জটি 3 টি বিভাগে বিভক্ত হবে: সংক্ষিপ্ত সংস্করণ, দীর্ঘ সংস্করণ এবং অতিরিক্ত বিশদ।

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

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

উপরের সমস্তগুলি গত দুটি চ্যালেঞ্জের জন্য সত্য ছিল। এবার প্রায়, বটগুলি একই সাথে একাধিক লাইনের কোড চালাতে সক্ষম হবে।

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

এপিআই

প্রতিটি বোটের ঠিক 24 টি লাইন থাকবে, যেখানে প্রতিটি লাইন নিম্নলিখিত বিন্যাসে থাকে:

$label command parameters //comments

লেবেল এবং মন্তব্যগুলি alচ্ছিক এবং প্রতিটি কমান্ডের বিভিন্ন পরামিতি রয়েছে। সবকিছুই সংবেদনশীল।

পরামিতি

প্যারামিটারগুলি টাইপ করা হয়, এবং নিম্নলিখিত ফর্ম্যাটে থাকতে পারে:

  1. 0 থেকে 23 এর মান।
  2. একটি পরিবর্তনশীল: A, B, C,D
  3. সংযোজন ব্যবহার করে একটি মান: A+3বা2+C
  4. কোডের একটি লাইন, যা #সাইন ব্যবহার করে মনোনীত করা হয়েছে ( #45 তম লাইন #C+2উপস্থাপন করবে , যখন গণনা করা রেখাটি উপস্থাপন করবে C+2)।
  5. আপনি $labelকোডের একটি লাইন নির্দিষ্ট করার পরিবর্তে একটি ব্যবহার করতে পারেন ।
  6. আপনার প্রতিপক্ষের পরিবর্তনশীল বা কোডের লাইন, দ্বারা মনোনীত *। আপনার প্রতিপক্ষটি আপনি যে স্কোয়ারের মুখোমুখি হচ্ছেন সেটিই বট। ( *Bআপনার প্রতিপক্ষের Bমানকে *#9উপস্থাপন করে যখন আপনার প্রতিপক্ষের দশম লাইন উপস্থাপন করে)। Square স্কোয়ারে কেউ না থাকলে কমান্ড কার্যকর হয় না not

কমান্ড

সরানো ভি

বট সরায় North+(V*90 degrees clockwise)। চলাচলের দিক পরিবর্তন হয় না।

টার্ন ভি

বটকে V*90 degreesঘড়ির কাঁটার দিকে ঘুরিয়ে দেয়।

অনুলিপি করুন

কপি যাই হোক না কেন হয় Vমধ্যে W। যদি Vএকটি লাইন নম্বর হয়, তবে Wএকটি লাইন নম্বর হতে হবে। যদি Vভেরিয়েবল বা মান হয় তবে Wঅবশ্যই একটি পরিবর্তনশীল হতে হবে।

পতাকা

কিছুই করে না।

স্তর টেলিভশন

ভেরিয়েবলের সাথে যুক্ত একটি নতুন থ্রেড শুরু করে V। তাত্ক্ষণিকভাবে এবং প্রতিটি ভবিষ্যতের পাল্লায়, থ্রেডটি লাইনে থাকা কমান্ডটি কার্যকর করবে V

যদি Vইতিমধ্যে কোনও থ্রেডের সাথে সংযুক্ত থাকে, তবে এই আদেশটি কোনও অপ-অপশন is যদি Vকোনও প্রতিপক্ষের পরিবর্তনশীল হয়, তবে প্রতিপক্ষ সেই চলকের সাথে সংযুক্ত একটি থ্রেড শুরু করবে।

স্টপ ভি

এই টার্নের Vশেষে চলকের সাথে সংযুক্ত থ্রেডটি থামায় ।

লক ভি

লাইন বা পরিবর্তনশীল আটকান Vব্যবহৃত হচ্ছে থেকে কোন ভাবেই থ্রেড যে বলা ছাড়া Lock। পরবর্তী Lockথ্রেডের পরে একই কলটি আনলক করে V। প্রতিপক্ষের পরিবর্তনশীল বা লাইনগুলিতে লকগুলি কল করা যায় না।

কনড ভিডাব্লু

এই পরীক্ষা হবে Cond। যদি শর্তটি সত্য হয়, তবে এটি থ্রেড পয়েন্টারটিকে লাইন নম্বরটিতে সরিয়ে ফেলবে V, অন্যথায় লাইন নম্বরে W। তারপরে সেই লাইনটি তত্ক্ষণাত কার্যকর করা হবে।

Conditionals কে হতে পারে X=Y, X<Y, !X, অথবা ?X:

  1. X=Y দুটি লাইন একই ধরণের এবং একই বট থেকে হয় কিনা তা পরীক্ষা করে, বা আপনি দুটি মান একই পরিমাণের সমান কিনা তা পরীক্ষা করেন।
  2. X<Yএর মান Xকম কিনা তা পরীক্ষা করে Y
  3. !Xভেরিয়েবল বা লাইন Xলক করা আছে কিনা তা পরীক্ষা করে (তালাবদ্ধ থাকলে সত্যটি প্রত্যাবর্তন করে)
  4. ?X প্রদত্ত ভেরিয়েবলের সাথে একটি থ্রেড যুক্ত রয়েছে কিনা তা পরীক্ষা করে

অতিরিক্ত তথ্য

বহু-থ্রেডযুক্ত মিথস্ক্রিয়া

একই ধরণের ক্রিয়াকলাপ একই সময়ে কার্যকর করা হয়। নিম্নলিখিত ক্রমে ক্রিয়াগুলি কার্যকর করা হয়:

  1. লক। বেশ কয়েকটি থ্রেড যদি কোনও ভেরিয়েবল লক করার চেষ্টা করে তবে সেগুলি সমস্ত ব্যর্থ হবে। অন্য কোনও এটি লক করার চেষ্টা করার সময় কোনও থ্রেড যদি কোনও ভেরিয়েবল আনলক করে থাকে তবে ভেরিয়েবলটি আনলক থাকবে।

  2. স্টার্ট। যদি বেশ কয়েকটি থ্রেড কোনও ভেরিয়েবলের উপর কোনও থ্রেড শুরু করার চেষ্টা করে তবে এটি একটি একক সূচনা হিসাবে গণ্য হবে।

  3. কপি। যদি দুটি থ্রেড উভয়ই একই ভেরিয়েবলের অনুলিপি করে তবে চলকটি এলোমেলো মান হিসাবে শেষ হবে। যদি তারা উভয়ই একই লাইনে অনুলিপি করে তবে উভয়ই কাজ করবে না। যদি কোনও থ্রেড একই ভেরিয়েবলের অনুলিপি করে অন্য থ্রেড থেকে অনুলিপি করে থাকে, তবে পরবর্তী থ্রেডটি এলোমেলো মানটি অনুলিপি করে। যদি দুটি থ্রেড উভয়ই একই ভেরিয়েবল থেকে অনুলিপি করা হয় তবে তারা উভয়ই ঠিকঠাক কাজ করবে।

  4. করে। সমস্ত শর্তাদি একই সাথে পরীক্ষা করা হবে এবং তারপরে থ্রেড ভেরিয়েবলগুলি আপডেট করা হবে। একটি কার্যকর করা Ifউচ্চতর অগ্রাধিকার সহ একটি ক্রিয়া যুক্ত হতে পারে। উচ্চ অগ্রাধিকার সহ ক্রিয়াকলাপ অতীতে অগ্রসর হওয়ার আগে কার্যকর করা হবে If, যখন নিম্ন অগ্রাধিকার সহ ক্রিয়াকলাপগুলি এর পরে কার্যকর করা হবে If

  5. নিয়ে যান। একই বটের একাধিক চলনগুলি বোটকে সমস্ত পদক্ষেপের যোগফলকে সরায়। যদি একাধিক বট একই স্থানে শেষ হয় তবে সেগুলি তাদের প্রারম্ভিক স্পটে ফিরে আসবে।

  6. চালু করুন। একই বটে একাধিক টার্নের যোগফল হবে।

  7. স্টপ। একই ভেরিয়েবলের একাধিক স্টপ কমান্ডগুলি একক স্টপ হিসাবে গণ্য হবে।

অন্যান্য বিস্তারিত

আপনার প্রাথমিক থ্রেডটি Dভেরিয়েবলের সাথে সংযুক্ত হতে শুরু করে

কোনও দিয়ে পুনরাবৃত্তি করা If( Ifনিজের প্রতি নির্দেশ দেওয়া একটি বিবৃতি থাকা) আপনার বটকে কিছুই করতে পারে না

লক করার পরে যদি কোনও থ্রেড বন্ধ হয়ে যায় তবে সেই লকগুলি আনলক হয়ে যাবে

লক করা ভেরিয়েবল বা লাইন ব্যবহারের ক্রিয়াগুলি কিছুই করবে না।

যদি কোনও বট 24 টি লাইনের চেয়ে কম হয়, অবশিষ্ট রেখাগুলি পূরণ করা হবে Flag

কোনও চলকটিতে একটি লেখার সম্পাদন যা একটি প্রারম্ভিক থ্রেডের সাথেও সংযুক্ত থাকে প্রকৃতপক্ষে থ্রেডটি নিম্নলিখিত মানটি শুরু হওয়ার সাথে সাথে নতুন মানটিতে এটি কার্যকর করা শুরু করবে।

বটগুলি নিম্নোক্ত প্যাটার্নে টরয়েডিয়াল বিশ্বে স্থাপন করা হয়:

B...B...B...
..B...B...B.
B...B...B...

আমি বেশ কয়েকটি নমুনা বট যুক্ত করেছি যা একটি ভাষা রেফারেন্স হিসাবে মন্তব্য করা হয়েছে।

নিয়ামক এখানে অবস্থিত । আমি এটিতে দীর্ঘ সময় ধরে কাজ করেছি, তবে সম্ভবত এটিতে বাগ রয়েছে। যখন চশমা এবং নিয়ামক পরস্পরবিরোধী হন, তখন অনুমানটি সঠিক।

স্কোরবোর্ড

1. 771  LockedScannerBot
2. 297  CopyAndSelfFlag
3. 289  DoubleTapBot
4. 197  ThreadCutterBot
5. 191  TripleThread
6. 180  ThickShelled
7. 155  Attacker
8. 99   RandomMover
9. 90   BananaBot
10. 56  LockedStationaryDoubleTap

বাহ, কমপক্ষে, ডাবলট্যাপ নমুনাগুলির চেয়ে অনেক ভাল দেখাচ্ছে!
কাটেনকিও

যদি আমি অন্য থ্রেড থেকে লক ভেরিয়েবলটি পড়ার চেষ্টা করি তবে কী হবে? বলুন আমি লক এ করি তার পরে অন্য থ্রেডে একটি মোভ এ আছে A এ কি 0 বা একটি এলোমেলো মানকে মূল্যায়ন করে বা চলাচল ব্যর্থ হয় বা ...?
স্পার

থ্রেড যখন অন্য থ্রেড দ্বারা লক করা রেখায় পৌঁছায় তখন কী হয় তা নিয়ে ডিট্টো। এটা কি নূপুর? এড়ানো যায় না?
স্পার

"অনুলিপি $ লেবেল এ" কাজ করা উচিত? এটি "কপি # 11 এ" হিসাবে ব্যাখ্যা করে যা বৈধ নয় এবং অনুবাদককে ক্র্যাশ করে, "কপি 11 এ" এর পরিবর্তে, যেমনটি আমি আশা করি।
স্পার

সম্ভাব্য বাগ ... আমি মনে করি যে তারা আমার নিজস্ব পতাকা লাইনগুলি অন্য কোনও থ্রেড দ্বারা লক করা সত্ত্বেও সেগুলি থেকে অনুলিপি করতে আমার পক্ষে পড়তে সক্ষম হবে।
স্পার

উত্তর:


3

লক স্ক্যানার বট

শত্রুটিকে যত তাড়াতাড়ি স্ক্যান করা যায় এবং পতাকাগুলির সাথে লাইনগুলি প্রতিস্থাপন করে।

    Lock D
    Copy $a A
    Start A
    Copy $b B
    Start B

$d  Lock $d0
    Lock $d1    
$d0 Copy $flag *#C+1
$d1 If 1=1 $d0 $d0

$a  Lock A
    Lock $a0
    Lock $a1
    Lock $a2
$a0 Copy $flag *#C
$a1 Copy C+2 C
$a2 If !*#C $a1 $a0

$b  Lock B
    Lock $b0
    Lock $b1
    Lock $b2
$b0 Move C
$b1 Turn 1
$b2 If 1=1 $b0 $b0

$flag Flag

আমি আপনার এ থ্রেডে শর্তসাপেক্ষ সম্পর্কে কৌতূহলী। ! * # সি আপনার টার্গেটের লাইন # সি (আপনার সি) লক করা আছে কিনা তা পরীক্ষা করে? কিভাবে এটি সহায়ক?
স্পার

@ স্পার দ্য থ্রেড শত্রুদের কোডের একটি লাইনটিকে একটি পতাকা সহ লক করা থাকলে সময় নষ্ট করে না।
TheNumberOne

ধন্যবাদ। আমি স্পষ্টতই যদি বিবৃতিগুলির গতি সম্পর্কিত ভুলভাবে লিখি।
স্পার

3

DoubleTapBot

এই বটটিতে 3 টি থ্রেড রয়েছে: একটি চলন্ত (এ) এর জন্য, অন্য দুটি পতাকাঙ্কের জন্য (বি এবং ডি)। বি পতাকা 1/2 টার্ন, ডি পতাকা 1/3 টার্ন। কিছুটা ঘুরে, তিনি দ্বিগুণ পতাকা প্রতিপক্ষকে :)

আমি ধরে নিয়েছি যে সিটি 23 এর বেশি হলে 0 এ ফিরে আসবে।

এটি নিজেকে প্রস্তুত করার জন্য কিছুটা পালা (8 টার্ন) পেলে এটি বেশ সুরক্ষিত হবে, কারণ তিনি সর্বদা কমপক্ষে 2 টি থ্রেড (এন্ড বি) চালিয়ে যান running

আমি এই মুহুর্তে এটি চেষ্টা করতে পারি না, তাই আমি যখন ঘরে ফিরে আসব তখন পরীক্ষাটি করবো :)

Lock D          //Thread D locks itself
Copy 6 A        //Thread A will start line 6
Start A     
Copy 13 B       //Thread B will start line 13
Start B        
Copy 20 D       //Moving Thread D to an other part of the program
Lock A          //Thread A locks itself and the line it will be using
Lock #10
Lock #11
Lock #12
Move C          //Move in a pseudo random direction
Turn 1      //always turn to the right
If 1=1 #10 #10  //return to Move C
Lock B          //Thread B locks itself and the line it will be using
Lock #13
Lock #14
Copy #18 *#C    //Copy a flag to the Cth line of the opponent
If 1=1 #16 #16  //jump back to the copy
Flag   
Flag   
Copy C+1 C      //Increment C
Copy #19 *#C+1  //Copy a flag to the Cth+1 line of the opponent
If 1=1 #20 #20  //jump back to the increment
Flag 

লক নম্বর কোনও বৈধ আদেশ নয়। আমি প্রতিটি সংখ্যার আগে # চিহ্ন রেখেছি। এছাড়াও, কমান্ডটি "ঘোরান", "টার্ন" নয়
নাথান মেরিল

@ নাথানমারিল কীভাবে, এটি একটি টাইপো, # টি ভুলে যান, এটি দেখানোর জন্য ধন্যবাদ thanks এবং মোড় নেওয়ার জন্য, আপনার পোস্টটি এমনভাবে সংশোধন করুন, আপনি টার্ন ভি টার্নস বট ভি * 90 ডিগ্রি ঘড়ির কাঁটার দিকে লিখেছিলেন। :)
কাটেনকিও

ওহ, আমি করেছি। টার্নটি আসলেই সঠিক, তবে আমি ফিরে গিয়ে কোডটি আপডেট করব
নাথান মেরিল

আপনি যখন 11,12,13 লক করছেন তখন আপনি 10,11,12 লক করছেন?
স্পার

বাহ, এটি নির্দেশ করার জন্য ধন্যবাদ!
কাটেনকিও

2

তালাবদ্ধ স্টেশনারি ডাবল ট্যাপ

@ কেটেনকিয়োর ডাবলট্যাপবট দ্বারা অনুপ্রাণিত হয়ে, এটি নিজের নিজের থ্রেডগুলি সম্পূর্ণরূপে লক করার বিনিময়ে কয়েকটি পতাকা এবং গতিবিধির কোনও আশা ছেড়ে দেয় যাতে এটি কখনও পুনরায় প্রোগ্রাম করা যায় না। এটি অবশ্য লুপিং কোড অঞ্চলে শত্রু পতাকা লিখিত থাকা এখনও অনুমেয়।

Lock $flag              // lock the only flag line, super important!
Lock D                  // lock thread D
Copy 10 A
Start A                 // start thread A at $Astart
Copy 17 B
Start B                 // start thread B at $Bstart
Lock $D1                // lock thread D lines
Lock $D2                // thread D should be safe on turn 8
$D1 Turn C              // Spin in place, once every 2 turns
$D2 If 0=0 $D1 $D1      // thread D loop
$Astart Lock A          // thread A starts here, locks itself
Lock $A1                // lock thread A lines
Lock $A2
Lock $A3                // thread A should be safe on turn 7
$A1 Copy $flag *#C      // ATTACK! once every 3 turns
$A2 Copy C+1 C          // increment C, used for attacks and turning
$A3 If 0=0 $A1 $A1      // thread A loop
$Bstart Lock B          // thread B starts here, locks itself
Lock $B1                // lock thread B lines
Lock $B2                // thread B should be safe on turn 8
$B1 Copy $flag *#C+12   // ATTACK! once every 2 turns
$B2 If 0=0 $B1 $B1      // thread B loop
$flag Flag

হাহাহা, পতাকাটি তালাবদ্ধ করা খুব ভাল আইডিয়া, আমার এটি চিন্তা করা উচিত ছিল! যাইহোক, আমি খুশি যে আমার বট কাউকে কিছু অনুপ্রেরণা দিয়েছিল!
কাটেনকিও

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

1

র্যান্ডম মুভার

একটি চিত্রযুক্ত নির্দেশে সরানো

Copy 5 C
Copy 8 B
Start C
Move A // If you can't catch me, you can't modify me
If 1=1 #3 #3 //Continue to execute the above line
Start B
Copy 4 A
If 1=1 #6 #6 //Continue to execute the above line
Flag
Copy 5 A
If 1=1 #9 #9 //Continue to execute the above line

1

পুরু শেলড

তার যতটুকু সম্ভব তার জিনিসগুলি তালাবন্ধ করে

Copy 5 B //Designating that the B thread will start on line 5
Start B //Starting the B thread
Lock C //Preventing C from being used
Copy A+1 A //The two threads are offset, meaning that the two threads shouldn't access this at the same time
Lock #A
Copy 2 B

1

আক্রমণকারী বট

পতাকাগুলি বিভিন্ন স্থানে অনুলিপি করে

Copy A+1 A // Increment A
Move A //Move in the Ath direction
Turn A //Rotate A times
Copy #8 *#A //Copy my flag over
Copy 23 D //Loop back to the beginning.  (I use 23 here as threads auto-increment)

0

ট্রিপল থ্রেড

এই সরল বট একই কোড সহ তিনটি থ্রেড চালায়। প্রতিটি থ্রেড 1/3 টার্ন আক্রমণ করে, 1/6 চালায়, 1/6 ঘুরে এবং বুককিপিং 1/3 করে।

Move 0
Start A
Start B
$loop Copy #A+9 *#C
Move C
Copy #A+9 *#C
Turn C
Copy C+1 C
If 0=0 $loop $loop

0

কলা বট

শত্রু কিছু করার আগে শত্রুদের চাকাতে কলা ফেলে দেওয়ার চেষ্টা করা হয়। স্কোয়াশ হওয়ার প্রবণতা রয়েছে।

$d     If !*D $d1 $d0
$d0    Copy 24 *D
$d1    If !D $d2 $start
$d2    If !*B $d5 $d3
$d3    Copy 24 *B
$d4    Copy $d D

$start Lock D             //Banana's like to split.
       Copy $a A
       Start A
       Copy $b B
       Start B
       Lock $flag

$d5    Copy $start *C     //It's okay if enemy messes up our start.
       Copy $d d

$a     Lock A
$a1    Move C
       Turn 1
       Copy $a1 A

$b     Lock B
$b0    Copy C+1 C
       If !*#C $b0 $b1    //Banana's are good at slipping.
$b1    Copy $flag *#C
$b2    Copy $b0 B

$flag  Flag

0

থ্রেড কাটার বট

   Lock D
   Lock $f
   Copy 16 C
$S If ?*D $1 $2
   Move 1
   Copy $S D
$f Flag
$1 Stop *D
$2 If ?*A $3 $4
$3 Stop *A
$4 If ?*B $5 $6
$5 Stop *B
$6 Copy $f *#C
   Copy C+1 C
   If *#C=#C $E $6
   Copy 2 D
$E Start *D

আপনার কোডটি পূরণ করার আগে সমস্ত শত্রু থ্রেড বন্ধ করুন।


0

কপি এবং স্ব পতাকা

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

    Lock D              // Lock D thread
    Copy $AS A
    Start A             // Start A thread at $AS
    Start B             // B is just a counter
    Copy $DL D          // Jump to D thread startup code
$DC Start B             // Don't let B thread get stopped
$D0 If !*#B $D1 $D2
$D1 Copy $DF *#B
$D2 If !*#B+6 $D3 $DM
$D3 Copy $DF *#B
$DM Move B              // Move some direction after attacking
$DA Move 0              // Move north ...
    If ?*D $DC $DA      // until we hit a live target
$DF Flag                // Flag to copy
$DL Lock #B+3           // Lock the D thread's lines
    If B<12 $DL $DA     // jump to `Move 0` when D thread is safe
$AS Lock A
$AL Lock #B+20
    If B<4 $AL $AD
    Copy 23 B           // reset B so A doesn't overwrite its own code
$AF Flag
    Flag
$AD Copy $AF #B+1       // Copy a safe flag over every unused line of code
    If B<18 $AD $AF

Move 0এগিয়ে না উত্তর দিকে সরানো হয়।
মেগাটম

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