একটি মাইনসুইপার বোর্ড যাচাই করুন


33

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

যথারীতি , আপনার একটি ফাংশন বা প্রোগ্রাম দেওয়া উচিত, এবং বাইটস জিতে সবচেয়ে সংক্ষিপ্ত কোড।

মাইনসুইপার উত্পাদন , সমাধান এবং পুরোপুরি বাস্তবায়নের জন্য অতীতের চ্যালেঞ্জগুলি দেখুন ।

ইনপুট:

ভালো একটি একক: STRING 02X2 13X2 X211

  • মাইনসুইপার বোর্ডের সারিগুলি স্পেস দ্বারা পৃথকভাবে দেওয়া হয়। সুতরাং, উপরেরটি 3x4 বোর্ডের প্রতিনিধিত্ব করে:

    02X2
    13X2
    X211

  • প্রতিটি ঘর একটি চরিত্র: Xএকটি খনি বা এর 0মাধ্যমে সংখ্যার জন্য 8

  • সমস্ত সারি একই দৈর্ঘ্য আছে।

  • কমপক্ষে 3 টি সারি এবং 3 টি কলাম রয়েছে।

  • ইনপুটটি কোনও স্পেস দিয়ে শুরু বা শেষ হয় না, তবে আপনি যদি চান তবে শেষের দিকে একটি নতুন লাইন অন্তর্ভুক্ত করতে পারেন।

আউটপুট:

সঠিক বোর্ডগুলির উপর একটি ধারাবাহিক সত্যবাদী এবং ভুল বোর্ডগুলিতে একটি ধারাবাহিক ফলসী মান। ধারাবাহিক অর্থ সমস্ত ট্রুথিয়ে আউটপুট একই এবং সমস্ত ফালসি আউটপুট একই।

পরীক্ষার মামলা

প্রতিটি লাইন পৃথক পরীক্ষার কেস।

True:

02X2 13X2 X211
XXXX XXXX XXXX XXXX
XX4X2 5X6X4 XX6XX 4XX54 2X4XX

False:

02X2 13X2 X212
XXXX XXXX X7XX XXXX
XX5X2 5X6X4 XX6XX 4XX54 2X5XX

আপনার সম্ভবত উল্লেখ করা উচিত ধারাবাহিক মিথ্যা আউটপুট অবশ্যই ধারাবাহিক সত্যবাদী আউটপুট থেকে আলাদা হতে হবে ;-)
জন ডিভোরাক

@ জনডভোরাক এটিকে যথাক্রমে সত্যবাদী এবং ফালসি দ্বারা বোঝানো উচিত।
এক্সনোর

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

4
@ জানডভোরাক 'সত্যবাদী' এবং 'মিথ্যাবাদী' আসলে কিছুটা সাধারণ শব্দ, যদি আমি ভুলভাবে টাইপের সময় সত্য বা মিথ্যা যা মূল্যায়ন করে এমন জিনিসগুলি (প্রয়োজনীয়ভাবে বুলস নয়) বর্ণনা করতে ব্যবহৃত হয় না। উদাহরণস্বরূপ 0 সাধারণত মিথ্যা এবং 1 সাধারণত সত্যবাদী।
কেএসব

1
@ জনডভোরাক নোপ, ট্রুথডি / ফ্যালসিকে সঠিক / ভুলের সাথে মিল করতে হবে।
xnor

উত্তর:


11

পাইথন 2, 132 129 128

def f(s):w=s.find(' ');E=dict(enumerate(s));return all(E[i]in' X'+`sum(E.get(i+d/3*~w+d%3+w,5)>'O'for d in range(9))`for i in E)

আমি enumerateএকটি গল্ফ ... এবং এমনকি rangeএকই প্রোগ্রামে অন্য কোথাও ব্যবহার করেছি । স্পষ্টতই এখানে কিছু ভুল আছে।

সম্পাদনা করুন: তার dict(enumerate(s))চেয়ে বেশি পরিমাণে ইটারেট করুন enumerate(s), সুতরাং enumerateদু'বার ডাকার দরকার নেই।


এর কি চালাক ব্যবহার ~! এবং ডিকোশনারিগুলির বাইরে সীমাবদ্ধতার সূচক কাজটি সঠিক করে তোলার জন্য।
xnor

@ এক্সনর ~অপারেটর সম্পর্কে আপনার মন্তব্য আমাকে বিদ্রূপ করার জন্য নোটিশ করেছে যে আমি একেবারেই অকারণে দুবার ব্যবহার করছি, যেখানে কেবল একবার এটি ব্যবহার করা একইভাবে একই কাজটি সম্পাদন করতে পারে। ধন্যবাদ, ধন্যবাদ অভিধানের অংশটি মজার ছিল।
feersum

9

পাইথ, 43

Jhxzd!f-@zT+" X"`sm/:+*JNztd+d2\Xm+T*kJU3Uz

এখানে চেষ্টা করুন

ব্যাখ্যা:

  • Jhxzd: এটি ইনপুট + 1 এর প্রথম স্থানের অবস্থান the ( zইনপুটটিতে, dস্থানটি।
  • !f: এটি !একটি ফিল্টার ( f) এর যৌক্তিক নয় ( ) , যা Trueকেবল এবং যদি কেবল অনুক্রমের প্রতিটি উপাদানগুলির জন্য মিথ্যা হয়।
  • -@zT: Tইনপুট থেকে চরিত্রটি অবস্থানের (ল্যাম্বডা ভেরিয়েবল) নিন এবং এর যে কোনও উপস্থিতি সরিয়ে ফেলুন: (চরিত্রটি অপসারণ না করা হলে এটি সত্য হবে এবং যদি তা মিথ্যা হয়ে থাকে।
  • +" X": স্থান, এক্স এবং
  • `: এর repr
  • sm: মানচিত্রের সমষ্টি
  • / \X: "এক্স" এর গণনা
  • :+*JNz: Jডামি অক্ষর দ্বারা উপস্থাপিত ইনপুট এর টুকরা
  • td+d2: ডি -1 থেকে ডি + 2 পর্যন্ত।
  • m+T*kJU3: ডি [টি, টি + জে, টি + ২ * জে] এর জন্য।
  • Uzটি ইন range(len(input))

7
ডাউনভোটার্স: ডাউনভোটস কেন?
isaacg

7

এপিএল (NARS2000) (74)

{~0∊(G>9)∨G=(⍴G)↑{+/∊9<⍵∘⌷¨G∘.⊖(G←2-⍳3)∘.⌽⊂Z}¨⍳⍴Z←G↑⍨2+⍴G←¯1+⎕D⍳⊃⍵⊂⍨⍵≠' '}

⎕MLসেট করা থাকলে ডায়ালগ এপিএলেও কাজ করে 3

ব্যাখ্যা:

  • ⊃⍵⊂⍨⍵≠' ': স্পেসে বিভক্ত হয়ে ম্যাট্রিক্স গঠনের জন্য তালিকাগুলি ব্যবহার করুন।
  • G←¯1+⎕D⍳: ⎕Dপ্রতিটি মানের জন্য সূচকটি সন্ধান করুন , 1 টি বিয়োগ করুন এবং এটিতে সংরক্ষণ করুন G। ( ⎕Dঅঙ্কগুলি অন্তর্ভুক্ত করে, কোনও অ-অঙ্ক রূপান্তরিত হবে 10)।
  • Z←G↑⍨2+⍴G: ম্যাট্রিক্সের প্রান্তে দুটি লাইন এবং শিরোনামের কলাম যুক্ত করুন, মোড়কের সাথে কাজ করতে
  • {... }¨⍳⍴Z: প্রতিটি অবস্থানের জন্য Z, সেই অবস্থানের মুর পাড়ায় বোমার পরিমাণ সন্ধান করুন:
    • G∘.⊖(G←2-⍳3)∘.⌽⊂Z: Zবাম, ডান, উপরে, নীচে, বাম-আপ, ডান-আপ, বাম-ডাউন এবং ডান- ডাউনকে ঘোরান ।
    • ⍵∘⌷¨: এগুলির প্রত্যেকের জন্য, এই প্রতিটি ঘোরানো ম্যাট্রিক্সের মধ্যে উপাদানটি সন্ধান করুন
    • +/∊9<: 9 টির চেয়ে বেশি উপাদানগুলি গণনা করুন (এটি বোমার পরিমাণ)।
  • (⍴G)↑: আবার শূন্যের যুক্ত লাইনগুলি সরিয়ে ফেলুন,
  • G=: প্রত্যেকটি উপাদান Gসেই অবস্থানের আশেপাশের বোমার পরিমাণের সমান কিনা তা পরীক্ষা করুন (এটি সমস্ত বোমাবিহীন স্কোয়ারের ক্ষেত্রে সত্য হওয়া উচিত),
  • (G>9)∨: এবং এগুলির উপাদানগুলি (এটি বোমাগুলি) এর Gচেয়ে বেশি কিনা তা পরীক্ষা করে দেখুন 9
  • ~0∊: 1ফলাফল যদি ম্যাট্রিক্সে শূন্য না থাকে তবে (= সমস্ত স্কোয়ার হয় বোমা বা সঠিক সংখ্যা), এবং 0যদি তা না করে তবে ফিরে আসুন।

আপনি কি বাইট বা অক্ষর গণনা করেছেন? আপনার বাইটগুলি গণনা করা উচিত।
টিম এস

5
@TimS .: 1 বাইট APL এনকোডিং লোড আছে, এখানে এক
মেরিনাস

5

সি #, 321 320 305

bool s(string B){var L=B.Split(' ').Select(s=>' '+s+' ').ToList();var b=new string(' ',L[0].Length);L.Insert(0,b);L.Add(b);Func<int,int,IEnumerable<int>>E=Enumerable.Range;return E(1,b.Length-2).All(x=>E(1,L.Count-2).All(y=>L[y][x]=='X'||L[y][x]-'0'==E(x-1,3).Sum(X=>E(y-1,3).Sum(Y=>L[Y][X]=='X'?1:0))));}

প্রথমে যে কোনও কিছুই গলফ করার চেষ্টা করুন এবং আমি জানি যে সি # আদর্শ ভাষা নয়।

আমি আশা করি একটি উদাহরণ পদ্ধতি লেখার অনুমতি দেওয়া হয়েছে, অন্যথায় এর জন্য আরও 7 টি অক্ষর যুক্ত করুন static

স্পেস আউট:

bool s(string B) {
    var L = B.Split(' ').Select(s => ' ' + s + ' ').ToList();
    var b = new string(' ', L[0].Length);
    L.Insert(0, b);
    L.Add(b);
    Func<int, int, IEnumerable<int>> E = Enumerable.Range;
    return E(1, b.Length - 2).All(x =>
        E(1, L.Count - 2).All(y =>
            L[y][x] == 'X' ||
            L[y][x] - '0' == E(x - 1, 3).Sum(X =>
                E(y - 1, 3).Sum(Y =>
                  L[Y][X] == 'X' ? 1 : 0))));
}

লিনক ব্যবহার করা লুপগুলির তুলনায় কিছু জায়গা সাশ্রয় করে তবে এটি ডিবাগ করা আরও শক্ত।

আমি char => intবিয়োগ দ্বারা রূপান্তর মত কিছু জিনিস শিখেছি '0'

স্পেসগুলি দিয়ে বোর্ডটি প্যাড করা সহজ মনে হয়েছিল যাতে এটির উপরে পুনরাবৃত্তি করা আরও সহজ হবে।


1
আপনি শুধু -'0'সঙ্গে প্রতিস্থাপন করতে পারবেন না -48। আমার জন্য কাজ করে এবং বিভিন্ন 'এক্স' এবং '' এর জন্য কয়েকটি বাইট সংরক্ষণ করে
রোমান গ্রাফ

5

পাইথন 2, 121

def f(B):n=B.find(' ')+1;R=range(len(B));print all(B[I]in' X'+`sum(2>I%n-i%n>-2<I/n-i/n<2<B[i]>'W'for i in R)`for I in R)

এটি ভারসাম্যপূর্ণ উত্তরের দ্বারা ভারীভাবে অনুপ্রাণিত । দিনের ক্রমটি ওভারকিল: কোষের 9 টি প্রতিবেশীর খনি অনুসন্ধান করার পরিবর্তে প্রতি একক কক্ষটি প্রতিবেশী খনি কিনা তা পরীক্ষা করে দেখুন।

আমরা যাচাই যদি দুটি কোষ সঙ্গে প্রতিবেশী 2>r>-2<c<2, যেখানে rএবং cকোষের সারি ও কলাম পার্থক্য, হয় সমতুল্য {r,c}<{-1,0,1}। এই স্থানাঙ্ক সেল সূচকের থেকে নির্ণিত হয় Iএবং iযেমন c=I%n-i%nএবং r=I/n-i/n। তালিকার তালিকার মতো এটি 2D অবজেক্টে রূপান্তরিত করার চেয়ে স্ট্রিংয়ের মধ্যে সরাসরি সূচীকরণ এবং সারি এবং কলামগুলি বের করা আরও দক্ষ। খনি চেক B[i]>'W'এখানে সমতুল্য B[i]=='X'

ব্যবহার enumerateকরা কুশলীর উপরে দুটি অক্ষর সংরক্ষণ করতে পারে range(len(B))ব্যতীত এটি কোনও পুনরাবৃত্ত বস্তু দেয় যা এর মাধ্যমে দুটি নেস্টেড লুপ সমর্থন করে না।


আমি মনে করি একটি নেতিবাচক মডুলাস n এর জন্য কাজ করা উচিত; তাহলে আপনি ব্যবহার করতে পারেন ~B.find
ফেয়ারসাম

@ ফেয়ারসাম দুর্ভাগ্যক্রমে, এটি গণ্ডগোল করেছে /কারণ এটি নেতিবাচক দিকগুলিও নীচের দিকে রাউন্ড করে।
xnor

4

পাইথন 2, 140

s=input();w=s.index(' ')+1
print all(c in'X 'or(int(c)==sum(s[max(0,a-1):max(0,a+2)].count('X')for a in[i-w,i,i+w]))for i,c in enumerate(s))

4

জাভাস্ক্রিপ্ট (ES6), 135 133 125 122

f=s=>s.split(" ")[e="every"]((l,i,a)=>[...l][e]((c,j)=>!(-[-1,0,k=1][e]((y,m,q)=>q[e](x=>k+=(a[i+y]||0)[j+x]=="X"))-c+k)))

স্ট্রিং হিসাবে ফাংশনে ইনপুট সরবরাহ করুন:

f("XX4X2 5X6X4 XX6XX 4XX54 2X4XX");

ব্যাখ্যার জন্য, নীচে পুরানো সংস্করণটি দেখুন। নতুন সংস্করণ প্রতিস্থাপন forসঙ্গে লুপ everyকল, এবং পরিবর্তনশীল ব্যবহার e="every"করতে someArray[e](...)পরিবর্তে someArray.every(...)

এছাড়াও, কাউন্টারটি kএখন 1এমনভাবে সূচিত হয় যাতে লুপটি চালিয়ে k+=...যেতে যাতে অভিব্যক্তিটি সর্বদা সত্য হয় every। আমরা অপারেশন দ্বারা ফিরে 1আসা trueফলাফল (যা সংখ্যায় coerces 1) বিয়োগ করে অতিরিক্তটি মুছে ফেলি ।every[-1,0,k=1][e](...)


পুরনো সংস্করণ:

f=s=>s.split(" ").every((l,i,a)=>[...l].every((c,j)=>{q=[-1,k=0,1];for(y of q)for(x of q)k+=(a[i+y]||0)[j+x]=="X";return c=="X"||k==c}))

স্পেস এবং মন্তব্য সহ কোড:

f=s=>s.split(" ")                 // split on spaces
      .every((l,i,a)=>             // for every line
                                   //     l: line string, i: line number, a: whole array
          [...l].every((c,j)=>{    // for every character
                                   //     c: character, j: index in string
              q=[-1,k=0,1];        // define counter k=0 and q=[-1,0,1]
              for(y of q)          // use q to loop adjacent spaces
                  for(x of q)

                      k+=              // add the following boolean to k:

                          (a[i+y]      //   from line number i+y...
                                 ||0)  //   (or a dummy zero, to prevent lookups on undefined)
                          [j+x]        //   ...get index j+x from the above value...
                                =="X"; //   ...and compare it to "X"

              return !(k-c)     // after the loop, this character passed if
                                // the char equals the number of counted X's (so k-c is 0)
                                // or it is an X itself (so `k-c` is NaN)
          })
      )

জাভাস্ক্রিপ্ট everyঅ্যারে পদ্ধতিটি একটি কলব্যাক নেয় এবং অ্যারের প্রতিটি উপাদানগুলিতে কলব্যাক প্রয়োগ করে। যদি কোনও কলব্যাক একটি মিথ্যা মান দেয় তবে everyকলটি ফিরে আসে false

জেএসের বুলিয়ানগুলি 1 বা 0 তে জোর করে যখন সংযোজনের অংশ হয়। প্রতিটি পার্শ্ববর্তী স্থানের জন্য, আমরা তার মানটির সাথে তুলনা করার বুলিয়ান ফলাফলটিকে "যুক্ত" করি Xএবং তারপরে kঅভিব্যক্তির মধ্যে কাউন্টারে সেই মানটি যুক্ত করি k += (... == "X")। অতএব, kআশেপাশের Xs এর সংখ্যা গণনা করে , কারণ trueহিসাবে গণনা করা হয় 1এবং falseহিসাবে গণনা করা হয় 0


c=="X"চেষ্টা করার পরিবর্তে !c/1, যা আপনাকে বিপুল পরিমাণে বয়সের জোড় জোড় বাঁচায়! যদি এটি ব্যর্থ হয়, চেষ্টা করুন !!c/1। যুক্তিটি হ'ল 'X'/1 => NaN, এবং NaNমিথ্যাও। আপনি যদি চেক করেন c=='X', তা না হলে কেন চেষ্টা করার চেষ্টা করবেন না false?
ইসমাইল মিগুয়েল

দুর্ভাগ্যক্রমে @ ইসমাইল মিগুয়েল যা মূল্যায়ন করে (!c)/1যা সাহায্য করে না; আমার !(c/1)2 0/1টির জন্য প্রথম বন্ধনী থাকা দরকার , যার দাম 2 Also এছাড়াও, মিথ্যাও, সুতরাং অবৈধ ইনপুটটির 0Xভুল ফলাফল হতে পারে true। জিরোদের সম্মান করার সময় আমি যেটা করতে পারি তা হ'ল দুটি শর্তকে একটি অবহেলা বাক্যটিতে মিশ্রিত করা, যেমন !(+c+1&&k-c), তবে এটি আমার ইতিমধ্যে যে সমান দৈর্ঘ্য।
অ্যাপসিলাররা

@ ইসমাইল মিগুয়েল যদিও আমাকে এটি সম্পর্কে চিন্তাভাবনা করার জন্য ধন্যবাদ - আমি বুঝতে পেরেছি যে !(k-1-c)উভয় শর্ত পরীক্ষা করে, কারণ যদি kম্যাচগুলি c(মাইনাস 1 অফসেট) হয় তবে তা প্রত্যাখ্যান 0সত্য করে তোলে , এবং যদি cসংখ্যা না হয় তবে আমরা পাই NaNএবং উপকার হয় true
এপসিলাররা

আপনি সত্যিই ক্ষুধার্ত ছিল! আপনি প্রাথমিক কোড থেকে 10 বাইট খেয়েছেন! আপনি যে সমাধানটি নিয়ে এসেছিলেন তা আমি সত্যিই পছন্দ করি। আপনার সমাধানের জন্য +1!
ইসমাইল মিগুয়েল

3

সিজেম, 70 65 63 বাইট

1l_S#):L)S*+:Q{Ii33/2%[0~1LL)L(L~)L~_))]W):Wf+Qf='X/,(scI==&}fI

এটি অনেক গল্ফ করা যেতে পারে।

1একটি বৈধ বোর্ডের 0জন্য এবং একটি অবৈধ বোর্ডের জন্য দেয় ।

পরীক্ষার মামলা

{-1:W;
1l_S#):L)S*+:Q{Ii33/2%[0~1LL)L(L~)L~_))]W):Wf+Qf='X/,(scI==&}fI
}6*]N*

ইনপুট

02X2 13X2 X211
XXXX XXXX XXXX XXXX
XX4X2 5X6X4 XX6XX 4XX54 2X4XX
02X2 13X2 X212
XXXX XXXX X7XX XXXX
XX5X2 5X6X4 XX6XX 4XX54 2X5XX

আউটপুট

1
1
1
0
0
0

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


3

জাভাস্ক্রিপ্ট (ES6) 98

স্ট্রিংয়ের প্রতিটি অক্ষরে একটি ফাংশন প্রয়োগ করতে কিছু ব্যবহার করে ।
ফাংশন ফিরে

  • ফাঁকা যদি ফাঁকা
  • 'এক্স' না হলে এনএএন (বারবার 'এক্স' এর মতো একটি অংকিত চর থেকে মানগুলি বিয়োগ করে)
  • অ্যাডিশান্ট 'এক্স' এর সঠিক সংখ্যা থাকলে 0 এর একটি সংখ্যাসূচক মান, অন্যটি 0 নয়
    । অভ্যন্তরীণ চেকটি ম্যাপ ব্যবহার করে তৈরি করা হয়েছে কারণ এটি প্রতিদ্বন্দ্বীর চেয়ে কম

কিছু সত্য সত্য প্রথম মান সত্য (এই ক্ষেত্রে, nonzero) অর্থ ব্যর্থ চেক। ফলাফলটি আরও স্বীকৃত সত্য / মিথ্যা দিতে অস্বীকৃত হয়।

F=v=>![...v].some(
  (x,p)=>x!=' '&&[1,-1,l=v.search(' '),-l,++l,-l,++l,-l].map(q=>x-=v[p+q]=='X')|x
)

টেস্ট ফায়ারফক্স / ফায়ারবাগ কনসোলটি

;["02X2 13X2 X212","XXXX XXXX X7XX XXXX","XX5X2 5X6X4 XX6XX 4XX54 2X5XX"
,"02X2 13X2 X211","XXXX XXXX XXXX XXXX","XX4X2 5X6X4 XX6XX 4XX54 2X4XX","111 1X1 111"]
.forEach(t => console.log(t, F(t)))

আউটপুট

02X2 13X2 X212 false
XXXX XXXX X7XX XXXX false
XX5X2 5X6X4 XX6XX 4XX54 2X5XX false
02X2 13X2 X211 true
XXXX XXXX XXXX XXXX true
XX4X2 5X6X4 XX6XX 4XX54 2X4XX true
111 1X1 111 true

1

আর, 156 অক্ষর

a=b=do.call(rbind,strsplit(scan(,""),""));for(i in 1:nrow(a))for(j in 1:ncol(a))b[i,j]=sum(a[abs(i-row(a))<2&abs(j-col(a))<2]=="X");v=a!="X";all(b[v]==a[v])

সুস্পষ্টতার জন্য ইনডেন্ট, স্পেস এবং লাইন ব্রেক সহ:

a = b = do.call(rbind,strsplit(scan(,""),"")) #Reads stdin and turn into a matrix
for(i in 1:nrow(a)) #Ugly, ugly loop
    for(j in 1:ncol(a))
        b[i,j] = sum(a[abs(i-row(a))<2 & abs(j-col(a))<2]=="X")
v = a!="X"
all(b[v]==a[v])

উদাহরণ:

> a=b=do.call(rbind,strsplit(scan(,""),""));for(i in 1:nrow(a))for(j in 1:ncol(a))b[i,j]=sum(a[abs(i-row(a))<2&abs(j-col(a))<2]=="X");v=a!="X";all(b[v]==a[v])
1: XX4X2 5X6X4 XX6XX 4XX54 2X4XX
6: 
Read 5 items
[1] TRUE
> a=b=do.call(rbind,strsplit(scan(,""),""));for(i in 1:nrow(a))for(j in 1:ncol(a))b[i,j]=sum(a[abs(i-row(a))<2&abs(j-col(a))<2]=="X");v=a!="X";all(b[v]==a[v])
1: XXXX XXXX XXXX XXXX
5: 
Read 4 items
[1] TRUE
> a=b=do.call(rbind,strsplit(scan(,""),""));for(i in 1:nrow(a))for(j in 1:ncol(a))b[i,j]=sum(a[abs(i-row(a))<2&abs(j-col(a))<2]=="X");v=a!="X";all(b[v]==a[v])
1: XX5X2 5X6X4 XX6XX 4XX54 2X5XX
6: 
Read 5 items
[1] FALSE
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.