মারগল্ফ ল্যাংটনের অ্যান্টিলের সাথে দেখা করেছেন


9
This is Markov.
Markov's golf ball rolls around randomly.
Markov's ball will hole however he strikes it.
Markov is smart.
Be like Markov.

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

কাজটি

একটি 10x20 ক্ষেত্রের ইনপুট নিন:

  • * MarGolf
  • O ল্যান্টনের অ্যান্থিল
  • , অ্যান্থিল 90 ডিগ্রি ঘড়ির কাঁটার দিকে ঘুরে
  • . আনথিল 90 ডিগ্রি ঘড়ির কাঁটার দিকে ঘুরিয়ে দেয়
  • 0 ল্যাংটনের অ্যান্টিলের মারগল্ফ

একটি ক্ষেত্র এর মত দেখাচ্ছে:

,...,.,,..,...,.,,..
..,.,,,..,...,..,.,.
.,,*.,....,.,,,.,,,.
,.,,.,...,,.,.,,,,,.
.,..,....,,.....,,.,
,.,.,...,..,.,,,,..,
....,,,,,,,,,.......
........,,.,...,...,
,,,,,,,,,,,,....,O.,
,.,.,.,.....,,.,,,,,

গেমের নিয়ম:
ইনপুট ফিল্ডের কনফিগারেশনটিকে টিক 0 বলা হয় Your বর্তমান কক্ষের আইটেমটি বর্তমানে লক্ষ্য কক্ষে আইটেম হয়ে যাবে। যদি মারগল্ফ এবং অ্যান্থিল উভয়ই পরের টিকের একই কক্ষে চলে যায়, খেলাটি শেষ হয়।

চলাচলের নিয়ম:

  • মারগোল্ফ এলোমেলোভাবে চলে। মার্কগল্ফের আশেপাশের 3x3 অঞ্চলের সমস্ত নয়টি কোষে নির্বাচিত হওয়ার সমান সুযোগ রয়েছে। এটি ক্ষেত্রের প্রান্তে 6 টি কোষ এবং একটি কোণে 4 টি কোষের মধ্যে পছন্দ হয়ে ওঠে।
  • ল্যাংটনের অ্যান্টিলের উপরের, নীচে, বাম, বা ডান (এনএসইডাব্লু বা যে কোনও সমতুল্য) এর চলাচলের দিকটি মনে রাখা দরকার। এটি প্রতিটি টিকের দিকে একটি কক্ষকে একদিকে নিয়ে যায় এবং ঘরের মূল সামগ্রীটি উপরে উল্লিখিত হিসাবে, দিকটি ঘড়ির কাঁটার দিকে বা অ্যান্টি-ক্লকওয়াইজদিকে পরিবর্তন করে। টিক 0 এ প্রাথমিক দিকটি এলোমেলো, প্রতিটি দিকের প্রাথমিক হওয়ার সমান সুযোগ রয়েছে।

মন্তব্য

  • প্রোগ্রামটি প্রতিটি টিকের কনফিগারেশনটি মুদ্রণ করা উচিত, যতক্ষণ না গেমটি শেষ হয়।
  • প্রতিটি টিকের ফিল্ড কনফিগারেশনের আগে টিক নম্বরটি থাকে।
  • আপনি ধরে নিতে পারেন ইনপুটটি সর্বদা বৈধ।
  • সংক্ষিপ্ততম প্রোগ্রামটি হ'ল বাইটস জিত।

আপডেট: অ্যানথিলের কথা উল্লেখ করতে ভুলে গেছেন সরানোর আগে দিকটি বিপরীত করে দেয় যদি তা অন্যথায় যদি মাঠের বাইরে চলে যায়। স্মরণ করিয়ে দেওয়ার জন্য ব্যবহারকারীর কাছে ক্রেডিট 81655।


কেউ কি এখানে ইঙ্গিত করতে পারে যে "এখানে <
সন্নিহিত

@ প্রপাদহেস্কিলার বি লাইক বিল ফেসবুক পৃষ্ঠা থেকে আমার ধারণা, উইকিপিডিয়ায় একটি নিবন্ধ আছে যা আপনি পড়তে চাইতে পারেন। en.wikipedia.org/wiki/Be_like_Bill
busukxuan


2
@ ডুরকনবব যদি আমি চ্যালেঞ্জটি সঠিকভাবে বুঝতে পারি তবে তাদের অধীনে কোনও টাইল নেই। যখন আপনি তাদের মধ্যে একজন সরাতে এটা টালি তারা সম্মুখের দিকে সরানো সঙ্গে বিনিময়সমূহ এবং যে টালি নির্ধারণ Oজন্য গুলি দিক পরবর্তী ধাপ।
মার্টিন এন্ডার

1
@ মার্টিনবাটনার হ্যাঁ এটি বেশিরভাগ ক্ষেত্রেই সঠিক। আমি এক কোণার ক্ষেত্রে "অদলবদল" শব্দটি এড়িয়ে গেছি তবে শব্দটি অন্যথায় সত্য।
busukxuan

উত্তর:


3

জাভা 10, 611 609 607 593 591 বাইট

m->{int x=0,y=0,X=0,Y=0,r=10,c,d=4,e;for(d*=Math.random();r-->0;)for(c=20;c-->0;){if(m[r][c]<43){x=r;y=c;}if(m[r][c]>48){X=r;Y=c;}}for(;;d=m[r][c]<45?d<2?d+2:d<3?1:0:d>1?d-2:d>0?2:3){p(m);for(e=4;e==4;e*=Math.random())e=9;m[r=x][c=y]=m[x+=e/3<1?x>0?-1:1:e/3>1?x<9?1:-1:0][y+=e%3<1?y>0?-1:1:e%3>1?y<19?1:-1:0];if(m[x][y]>48){m[x][y]=48;m[r][c]=0;p(m);e/=0;}m[x][y]=42;m[r=X][c=Y]=m[X+=d<1?X<9?1:-1:d==1?X>0?-1:1:0][Y+=d==2?Y<19?1:-1:d>2?Y>0?-1:1:0];if(m[X][Y]<43){m[r][c]=48;m[X][Y]=0;p(m);e/=0;}m[X][Y]=79;}}void p(char[][]m){var p="";for(var a:m)p+=p.valueOf(a)+"\n";System.out.println(p);}

-৪ বাইট @ সিলিংক্যাট ধন্যবাদ ।

এর চূড়ান্ত অদলবদল ধরে *এবং Oসেখান *থেকে আসা ঘরটি খালি করবে ।

ব্যাখ্যা:

এটি অনলাইনে চেষ্টা করুন।

m->{                        // Method with character-matrix parameter and no return-type
  int x=0,y=0,              //  [x,y] coordinates of MarGolf
      X=0,Y=0,              //  [X,Y] coordinates of Langton's Anthill
      r=10,c,               //  Temp [x,y] coordinates
      d=4,                  //  Direction Langton's Anthill
      e;                    //  Direction MarGolf
  for(d*=Math.random();     //  Set the direction Langton's Anthill randomly [0,3]
      r-->0;)               //  Loop over the rows:
    for(c=20;c-->0;){       //   Inner loop over the columns:
      if(m[r][c]<43){       //    If '*' is found:
        x=r;y=c;}           //     Set MarGolf's [x,y] coordinates
      if(m[r][c]>48){       //    If 'O' is found:
        X=r;Y=c;}}          //     Set Langton's Anthill's [X,Y] coordinates
  for(;                     //  Loop indefinitely:
       ;                    //    After every iteration:
        d=                  //     Change the direction of Langton's Anthill:
          m[r][c]<45?       //      If the swapped cell contained a comma:
           d<2?d+2:d<3?1:0  //       Change the direction clockwise
          :                 //      Else (the swapped cell contained a dot):
           d>1?d-2:d>0?2:3){//       Change the direction counterclockwise
  p(m);                     //  Pretty-print the matrix
  for(e=4;e==4;e*=Math.random())e=9;
                            //  Change direction MarGolf randomly [0-9] (excluding 4)
  m[r=x][c=y]               //  Save the current MarGolf coordinates
   =m[x+=e/3<1?x>0?-1:1:e/3>1?x<9?1:-1:0]
     [y+=e%3<1?y>0?-1:1:e%3>1?y<19?1:-1:0];
                            //  And change that cell to the content in direction `e`
                            //  0 to 9 (excl. 4) is NW,N,NE,W,n/a,E,SW,S,SE respectively
                            //  If `e` would go out of bounds, it moves opposite instead
  if(m[x][y]>48){           //  If MarGolf reached Langton's Anthill:
    m[x][y]=48;             //   Set that cell to '0'
    m[r][c]=0;              //   And empty the swapped cell
    p(m);                   //   Print the final status of the matrix
    e/=0;}                  //   And stop the loop with an error to exit the program
  m[x][y]=42;               //  Change the cell in the new coordinate to '*'
  m[r=X][c=Y]               //  Save the current Langton's Anthill coordinates
   =m[X+=d<1?X<9?1:-1:d==1?X>0?-1:1:0]
      [Y+=d==2?Y<19?1:-1:d>2?Y>0?-1:1:0];
                            //  And change that cell to the content in direction `d`
                            //  0 to 3 is E,W,S,N respectively
                            //  If `d` would be out of bounds, it moves opposite instead
  if(m[X][Y]<43){           //  If MarGolf reached Langton's Anthill:
    m[r][c]=48;             //   Set that cell to '0'
    m[X][Y]=0;              //   And empty the swapped cell
    p(m);                   //   Print the final status of the matrix
    e/=0;}                  //   And stop the loop with an error to exit the method
  m[X][Y]=79;}}             //  Change the cell in the new coordinate to 'O'

void p(char[][]m){          // Separated method to print the given matrix
  var p="";                 //  String to print, starting empty
  for(var a:m){             //  Loop over the rows:
    p+=p.valueOf(a)         //   Convert the character-array to a String line and append,
                     +"\n"; //   including a trailing newline
  System.out.println(p);}   //  Print the String with trailing newline as separator
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.