একটি সীমান্ত পরিখা খনন করুন


59

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

কার্য: আস্তান এবং ব্লানদিয়ার মধ্যবর্তী সীমানার 2D মানচিত্র দেওয়া, ব্ল্যান্ডসকে সীমান্ত পরিখা জন্য অর্থ প্রদান (জমি দিয়ে) করুন।

উদাহরণস্বরূপ: আস্তানিয়ান কক্ষগুলি চিহ্নিত A, বেল্যান্ডীয় কোষগুলি চিহ্নিত Bএবং ট্রেঞ্চ সেলগুলি চিহ্নিত করা হয়েছে +(মানচিত্রের ফ্রেমগুলি কেবল স্পষ্টতার জন্য):

┌──────────┐ ┌──────────┐
│AAAAAAAAAA│ │AAAAAAAAAA│
│ABAAAAAABA│ │A+AAAAAA+A│
│ABBBAABABA│ │A+++AA+A+A│
│ABBBAABABA│ │A+B+AA+A+A│
│ABBBBABABA│→│A+B++A+A+A│
│ABBBBABBBB│ │A+BB+A++++│
│ABBBBABBBB│ │A+BB+A+BBB│
│ABBBBBBBBB│ │A+BB+++BBB│
│BBBBBBBBBB│ │++BBBBBBBB│
└──────────┘ └──────────┘

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

অটোমেটন গঠণ : এর মুর পাড়ায় অন্তত একটি আস্তানিয়ান কোষযুক্ত একটি বেল্যান্ডীয় সেল একটি সীমান্ত ট্রেঞ্চ সেল হয়ে যায়।

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

[
  "AAAAAAAAAA",
  "ABAAAAAABA",
  "ABBBAABABA",
  "ABBBAABABA",
  "ABBBBABABA",
  "ABBBBABBBB",
  "ABBBBABBBB",
  "ABBBBBBBBB",
  "BBBBBBBBBB"
]

হয়ে:

[
  "AAAAAAAAAA",
  "A+AAAAAA+A",
  "A+++AA+A+A",
  "A+B+AA+A+A",
  "A+B++A+A+A",
  "A+BB+A++++",
  "A+BB+A+BBB",
  "A+BB+++BBB",
  "++BBBBBBBB"
]

[
  "AAA",
  "AAA",
  "BBB"
]

হয়ে:

[
  "AAA",
  "AAA",
  "+++"
]

[
  "AAAAAAAAAA",
  "AAAABBBAAA",
  "AAAABBBAAA",
  "AAAABBBAAA",
  "AAAAAAAAAA",
  "BBBBBBABBB",
  "BBBBBBAABB",
  "BBBAAAAABB",
  "BBBBBBBBBB"
]

হয়ে:

[
  "AAAAAAAAAA",
  "AAAA+++AAA",
  "AAAA+B+AAA",
  "AAAA+++AAA",
  "AAAAAAAAAA",
  "++++++A+++",
  "BB++++AA+B",
  "BB+AAAAA+B",
  "BB+++++++B"
]

* অস্বীকৃতি: বাস্তব জিওপলিটিক্সের যে কোনও রিসামব্লান্স নির্ভেজালভাবে যৌক্তিক!


23
কোড গল্ফ আকারে রাজনৈতিক ব্যঙ্গ, আমি এটি পছন্দ করি: ও)
সোকে

4
-1 তার জন্য :<sup><sub><sup><sub><sup><sub><sup><sub>
লুইস মেন্ডো

25
অজগর, 4 বাইট : passএকটি সীমান্ত পরিখা তৈরির পরিকল্পনা সরকারী শাটডাউন বাড়ে এবং কিছুই ঘটে না।
Thespinosa

3
@ স্পেনোসা না, খন্দকের ব্যবস্থা না করা অবধি বন্ধ রয়েছে ।
অ্যাডাম

1
আমি ব্যাকগ্রাউন্ড স্টোরির কারণে উত্সাহিত করেছি। পড়াও চালিয়ে যাননি।
পাইপ

উত্তর:



9

এমএটিএল , 11 8 বাইট

@ ফ্লাওয়ারের অষ্টাভে উত্তর এবং @ লিটারোসিয়াস্টের ম্যাথেমেটিকায় উত্তর দ্বারা অনুপ্রাণিত ।

EG9&3ZI-

ইনপুটটি এমন একটি ম্যাট্রিক্স যা আস্তান প্রতিনিধিত্ব করে 0এবং বেলডিয়া দ্বারা প্রতিনিধি 1। পরিখা দ্বারা আউটপুটটিতে প্রতিনিধিত্ব করা হয় 2

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

কিভাবে এটা কাজ করে

E       % Implicit input. Multiply by 2, element-wise
G       % Push input again
9       % Push 9
&3ZI    % Erode with neighbourhood of 9 elements (that is, 3×3) 
-       % Subtract, element-wise. Implicit display

8

জাভাস্ক্রিপ্ট (ES7),  84  82 বাইট

@ শেগি কে 2 বাইট সংরক্ষণ করা হয়েছে

301

a=>(g=x=>a.map(t=(r,Y)=>r.map((v,X)=>1/x?t|=(x-X)**2+(y-Y)**2<v:v||g(X,y=Y)|t)))()

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

মন্তব্য

a => (                      // a[] = input matrix
  g = x =>                  // g = function taking x (initially undefined)
    a.map(t =               //   initialize t to a non-numeric value
      (r, Y) =>             //   for each row r[] at position Y in a[]:
      r.map((v, X) =>       //     for each value v at position X in r[]:
        1 / x ?             //       if x is defined (this is a recursive call):
          t |=              //         set the flag t if:
            (x - X) ** 2 +  //           the squared Euclidean distance
            (y - Y) ** 2    //           between (x, y) and (X, Y)
            < v             //           is less than v (3 = Astan, 0 = Blandia)
        :                   //       else (this is the initial call to g):
          v ||              //         yield v unchanged if it's equal to 3 (Astan)
          g(X, y = Y)       //         otherwise, do a recursive call with (X, Y) = (x, y)
          | t               //         and yield the flag t (0 = no change, 1 = trench)
      )                     //     end of inner map()
    )                       //   end of outer map()
)()                         // initial call to g


4
@ শেগি ইদানীং পর্যাপ্ত প্রশ্ন নয়। আমি আর গল্ফ জানি না। : ডি ধন্যবাদ!
আরনাউল্ড

আমি শুধু আগে একই জিনিস চিন্তা ছিল!
শেগি

7

কে (এনএনজি / কে) , 23 বাইট

{x+x&2{++/'3'0,x,0}/~x}

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

0 1 2জন্য ব্যবহার করে"AB+"

{ } যুক্তি দিয়ে ফাংশন x

~ যৌক্তিক নয়

2{ }/ দু'বার কর

  • 0,x,0 0-s (ম্যাট্রিক্সের শীর্ষ এবং নীচে) দিয়ে ঘিরে

  • 3' একটানা সারিগুলির ট্রিপল

  • +/' প্রতিটি যোগফল

  • + পক্ষান্তরিত করা

x&যৌক্তিক এবং xসাথে

x+যোগ xকরুন


5

এপিএল (ডায়ালগ ইউনিকোড) , 11 বাইট এসবিসিএস

⊢⌈{2∊⍵}⌺3 3

এই @ dzaima এর 12-বাইট সমাধান উপর ভিত্তি করে তৈরি চ্যাটে । ডিএফএন-তে ব্যবহার করার চিন্তাভাবনা করার জন্য @ অ্যাডাম নিজেই কৃতিত্ব, এবং ইনপুট এবং আউটপুট জন্য একই এনকোডিংটি আমাদের মনে করিয়ে দেওয়ার জন্য @ এইচপিউইজকে

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

প্রতিনিধিত্ব করে 'AB+'যেমন 2 0 1যথাক্রমে

{ }⌺3 3 ইনপুটটির প্রতিটি ওভারল্যাপিং 3 × 3 অঞ্চলে একটি ফাংশন প্রয়োগ করুন, ম্যাট্রিক্সের বাইরে 1 ইউনিট প্রসারিত অঞ্চলগুলি সহ 0 টি সহ প্যাড করা

2∊⍵যুক্তিতে একটি 2 উপস্থিত আছে? 0/1 বুলিয়ান ফিরিয়ে দিন

⊢⌈ এর প্রতি-উপাদান সর্বাধিক এবং মূল ম্যাট্রিক্স


অবশ্যই, স্টেনসিলে স্যুইচ করা আপনার বাইটের অর্ধেকেরও বেশি সাশ্রয় করবে।
আদম

@ অ্যাডাম যে কোনও ভিন্ন ভাষায় উত্তর হবে, সুতরাং এই উত্তরের তুলনায় তুলনামূলক বা প্রতিদ্বন্দ্বী নয়। এবং আমি বিশেষ করে আকর্ষণীয়, দুঃখিত বিশেষ উদ্দেশ্য ভাষায় golfing খুঁজে না
ngn

@ অ্যাডম এমন একটি উপনাম displayযার জন্য আমি অপসারণ করতে ভুলে গেছি। এখন সরানো হয়েছে
এনজিএন

5

পাওয়ারশেল , 220 বাইট

এটি অন্যান্য জমা দেওয়ার মতো ছোট নয়, তবে আমি ভেবেছিলাম এটি রেফারেন্সের জন্য যুক্ত করব। [সম্মুখ!]

function m($i,$m){($i-1)..($i+1)|?{$_-in0..$m}}
$h=$a.count-1;$w=$a[0].length-1
foreach($i in 0..$h){-join$(foreach($j in 0..$w){if ($a[$i][$j]-eq'B'-and($a[(m $i $h)]|?{$_[(m $j $w)]-match'A'})){'+'}else{$a[$i][$j]}})} 

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


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

চূড়ান্ত লাইনটি 0..$h|%{-join$(foreach($j in 0..$w){if ($a[$_][$j]-eq'B'-and($a[(m $_ $h)]|?{$_[(m $j $w)]-match'A'})){'+'}else{$a[$_][$j]}})}207 বাইটের হয়ে উঠতে পারে ?
গ্যাব্রিয়েল মিলস

4

অক্টাভা , 37 31 26 বাইট

এই ফাংশনটি "চিত্র" ব্যবহার করে আস্তান ( ) এর অংশে এক রূপক ক্ষয় সম্পাদন 1-bকরে এবং তারপরে তিনটি অঞ্চলকে পৃথক চিহ্ন তৈরি করতে কিছু গাণিতিক ব্যবহার করে। -৫ বাইটের জন্য লুইস মেন্ডোকে ধন্যবাদ!conv2 imerode

@(b)2*b-imerode(b,ones(3))

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


2
কোনও সমঝোতার জন্য -1 :
লুইস মেন্ডো

@ লুইসমেন্ডো আগের সংস্করণে একটি সমঝোতা অন্তর্ভুক্ত ছিল :)
flawr

ধন্যবাদ, আপডেট!
flawr

3

জে , 28 বাইট

>.3 3(2 e.,);._3(0|:@,|.)^:4

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

'AB+' -> 2 0 1

Ngn এর এপিএল সমাধান দ্বারা অনুপ্রাণিত। জিরো দিয়ে ম্যাট্রিক্স প্যাড করার জন্য 12 বাইট ...


কেন এপিএল সমাধান শূন্য প্যাডিং না করে পালাতে সক্ষম?
যোনাহ

@ জোনাঃ এপিএল (স্টেনসিল) এটি অ্যাটোমেটিকভাবে করে: "আয়তক্ষেত্রগুলি Y এর ক্রমাগত উপাদানগুলিতে কেন্দ্র করে এবং (আয়তক্ষেত্রের আকার 1 না হওয়া পর্যন্ত) পূর্ণ উপাদানগুলির সাথে প্যাড করে থাকে।"
গ্যালেন ইভানভ

এটি জে এর সংস্করণের চেয়ে অনেক বেশি দরকারী বলে মনে হচ্ছে ...
যোনা

@ জোনাঃ হ্যাঁ, এটি!
গ্যালেন ইভানভ

2

কাঠকয়লা , 20 বাইট

≔⪫θ⸿θPθFθ⎇∧№KMA⁼Bι+ι

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

≔⪫θ⸿θ

সাধারনত নতুন লাইনের চেয়ে ক্যারেজের রিটার্ন সহ ইনপুট অ্যারে যোগদান করুন। এটির প্রয়োজন যাতে অক্ষরগুলি পৃথকভাবে মুদ্রণ করা যায়।

Pθ

কার্সারটি সরানো ছাড়াই ইনপুট স্ট্রিংটি মুদ্রণ করুন।

Fθ

ইনপুট স্ট্রিংয়ের প্রতিটি অক্ষরের উপরে লুপ করুন।

⎇∧№KMA⁼Bι

মুর পাড়ায় যদি একটি থাকে Aএবং বর্তমান চরিত্রটি একটি B...

+

... তারপরে Bএকটি দিয়ে ওভাররাইট করুন +...

ι

... অন্যথায় বর্তমান চরিত্রটি মুদ্রণ করুন (বা বর্তমান অক্ষরটি যদি ক্যারেজ ফেরত হয় তবে পরবর্তী লাইনে যান)।


2

জাভাস্ক্রিপ্ট, 85 বাইট

গভীর রাতে এটিকে একসাথে ফেলেছি এবং এটি সম্পর্কে ভুলে গেছি। সম্ভবত এখনও কোথাও কিছু উন্নতির জন্য জায়গা।

ইনপুট এবং আউটপুট হ'ল অঙ্কের অ্যারেগুলির অ্যারে হিসাবে, 3আস্তান, 0ব্লান্ডিয়ার 1জন্য এবং ট্রেঞ্চের জন্য ব্যবহার করে।

a=>a.map((x,i)=>x.map((y,j)=>o.map(v=>o.map(h=>y|=1&(a[i+v]||x)[j+h]))|y),o=[-1,0,1])

এটি অনলাইনে ব্যবহার করে দেখুন (সুবিধার্থে, চ্যালেঞ্জে ব্যবহৃত আই / ও ফর্ম্যাট থেকে & ফিরে ফিরে মানচিত্রগুলি)


2

জাভাস্ক্রিপ্ট, 126 118 বাইট

_=>_.map(x=>x.replace(/(?<=A)B|B(?=A)/g,0)).map((x,i,a)=>[...x].map((v,j)=>v>'A'&&(a[i-1][j]<v|(a[i+1]||x)[j]<v)?0:v))

প্রশ্ন থেকে একটি স্ট্রিং অ্যারে পাস করুন এবং আপনি পরিখা জন্য 0 ব্যবহার করে স্ট্রিং চরিত্রের অ্যারে (ধন্যবাদ @ শেগি!) পেয়ে যাবেন। সম্ভবত আরও গল্ফ করা যেতে পারে (সংখ্যার অ্যারেগুলিতে স্যুইচ না করে) তবে আমি এই মুহুর্তে কিছুই ভাবতে পারি না।


আমি মনে করি এটি 120 বাইটের জন্য কাজ করে।
শেগি

বা 116 বাইট অক্ষর অ্যারের একটি অ্যারে ফিরিয়ে দেয়।
শেগি

1
@ শেগি আপনার গল্ফ কাজ করে না, দুঃখের সাথে - এটি এমন জায়গাগুলি ধরতে পারে না যেখানে এ এবং বি এর একে অপরের কর্ণযুক্ত। অন্যদিকে, এটি কিছু বাতলান করে সত্যিই সহজ golfs যে আমার হাতছাড়া ...
এম Dirr

1

রেটিনা 0.8.2 , 92 80 বাইট

(?<=¶(.)*)B(?=.*¶(?<-1>.)*(?(1)_)A|(?<=¶(?(1)_)(?<-1>.)*A.*¶.*))
a
iT`Ba`+`.?a.?

এটি অনলাইন চেষ্টা করুন! আমার উত্তরটির উপর ভিত্তি করে আমি কি সময়মতো এটি তৈরি করব? ব্যাখ্যা: Bs এর উপরে বা নীচের নীচে যে কোনও গুলি এসগুলিতে Aরূপান্তরিত হয় a। এরপরে s বা s এর Bবাম বা ডানে s পরীক্ষা করতে সমস্যা হ্রাস করে । গুলি নিজেদের এছাড়াও পরিণত করতে প্রয়োজন অবশ্যই এস, কিন্তু ভাগ্যক্রমে পতাকা শুধুমাত্র Regex ম্যাচ, প্রকৃত লিপ্যন্তর প্রভাবিত, তাই গুলি অপ্রভাবিত থাকা।Aaa+iTA


1

05 এ বি 1 ই , 29 বাইট

_2FIн¸.øVgN+FYN._3£})εøO}ø}*Ā+

ম্যাট্রিকগুলি সত্যই 05AB1E এর শক্তিশালী মামলা নয় (না তারা আমার দৃ suit় মামলাও নয়) .. তবে অবশ্যই আরও কিছুটা গল্ফ করা যেতে পারে। @Ngn এর কে ( এনএনজি / কে) উত্তরে
অনুপ্রাণিত হয়ে যথাক্রমে 2D পূর্ণসংখ্যার ম্যাট্রিক্সের I / O ব্যবহার করে।012AB+

এটি অনলাইনে চেষ্টা করুন । (টিআইও-র ফুটারটি আউটপুটটি বেশ-মুদ্রণ করতে হবে mat ম্যাট্রিক্স আউটপুটটি দেখতে এটি নির্দ্বিধায় অনুভব করুন))

ব্যাখ্যা:

_                # Inverse the values of the (implicit) input-matrix (0→1 and 1→0)
                 #  i.e. [[0,0,0,0],[0,1,0,0],[0,1,1,1],[1,1,1,1]]
                 #   → [[1,1,1,1],[1,0,1,1],[1,0,0,0],[0,0,0,0]]
 2F              # Loop `n` 2 times in the range [0, 2):
   Iн            #  Take the input-matrix, and only leave the first inner list of 0s
                 #   i.e. [[0,0,0,0],[0,1,0,0],[0,1,1,1],[1,1,1,1]] → [0,0,0,0]
     ¸           #  Wrap it into a list
                 #   i.e. [0,0,0,0] → [[0,0,0,0]]
               #  Surround the inverted input with the list of 0s
                 #   i.e. [[1,1,1,1],[1,0,1,1],[1,0,0,0],[0,0,0,0]] and [0,0,0,0]
                 #    → [[0,0,0,0],[1,1,1,1],[1,0,1,1],[1,0,0,0],[0,0,0,0],[0,0,0,0]]
        V        #  Pop and store it in variable `Y`
   g             #  Take the length of the (implicit) input-matrix
                 #   i.e. [[0,0,0,0],[0,1,0,0],[0,1,1,1],[1,1,1,1]] → 4
    N+           #  Add `n` to it
                 #   i.e. 4 and n=0 → 4
                 #   i.e. 4 and n=1 → 5
      F          #  Inner loop `N` in the range [0, length+`n`):
       Y         #   Push matrix `Y`
        N._      #   Rotate it `N` times towards the left
                 #    i.e. [[0,0,0,0],[1,1,1,1],[1,0,1,1],[1,0,0,0],[0,0,0,0],[0,0,0,0]] and N=2
                 #     → [[1,0,1,1],[1,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,1,1,1]]
            3£   #   And only leave the first three inner lists
                 #    i.e. [[1,0,1,1],[1,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,1,1,1]]
                 #     → [[1,0,1,1],[1,0,0,0],[0,0,0,0]]
              }  #  After the inner loop:
    )            #  Wrap everything on the stack into a list
                 #   → [[[0,0,0,0],[1,1,1,1],[1,0,1,1]],[[1,1,1,1],[1,0,1,1],[1,0,0,0]],[[1,0,1,1],[1,0,0,0],[0,0,0,0]],[[1,0,0,0],[0,0,0,0],[0,0,0,0]]]
     €ø          #  Zip/transpose (swapping rows/columns) each matrix in the list
                 #   → [[[0,1,1],[0,1,0],[0,1,1],[0,1,1]],[[1,1,1],[1,0,0],[1,1,0],[1,1,0]],[[1,1,0],[0,0,0],[1,0,0],[1,0,0]],[[1,0,0],[0,0,0],[0,0,0],[0,0,0]]]
       O         #  And take the sum of each inner list
                 #   → [[2,1,2,2],[3,1,2,2],[2,0,1,1],[1,0,0,0]]
        ø        #  Zip/transpose; swapping rows/columns the entire matrix again
                 #   i.e. [[2,1,2,2],[3,1,2,2],[2,0,1,1],[1,0,0,0]]
                 #    → [[2,3,2,1],[1,1,0,0],[2,2,1,0],[2,2,1,0]]
               } # After the outer loop:
                 #   i.e. [[3,5,5,4,2],[4,6,5,4,2],[2,3,2,2,1],[1,1,0,0,0]]
  *              # Multiple each value with the input-matrix at the same positions,
                 # which implicitly removes the trailing values
                 #  i.e. [[3,5,5,4,2],[4,6,5,4,2],[2,3,2,2,1],[1,1,0,0,0]]
                 #   and [[0,0,0,0],[0,1,0,0],[0,1,1,1],[1,1,1,1]]
                 #    → [[0,0,0,0],[0,1,0,0],[0,2,1,0],[2,2,1,0]]
   Ā             # Truthify each value (0 remains 0; everything else becomes 1)
                 #  i.e. [[0,0,0,0],[0,1,0,0],[0,2,1,0],[2,2,1,0]]
                 #   → [[0,0,0,0],[0,1,0,0],[0,1,1,1],[1,1,0,0]]
    +            # Then add each value with the input-matrix at the same positions
                 #  i.e. [[0,0,0,0],[0,1,0,0],[0,1,1,1],[1,1,0,0]]
                 #   and [[0,0,0,0],[0,1,0,0],[0,1,1,1],[1,1,1,1]]
                 #    → [[0,0,0,0],[0,2,0,0],[0,2,2,2],[2,2,1,1]]
                 # (and output the result implicitly)

1

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 187 বাইট

a=>a.Select((b,i)=>b.Select((c,j)=>{int k=0;for(int x=Math.Max(0,i-1);x<Math.Min(i+2,a.Count);x++)for(int y=Math.Max(0,j-1);y<Math.Min(j+2,a[0].Count);)k+=a[x][y++];return k>1&c<1?9:c;}))

Take()S, Skip()s, এবং Select()s শৃঙ্খলাবদ্ধ না করে পরিবর্তে প্রতিবেশীদের সন্ধান করতে লুপগুলির জন্য এটি দ্বিগুণ ব্যবহার করে। বিশাল বাইট 392 বাইট থেকে 187 এ হ্রাস পায় Lin লিনক সর্বদা স্বল্পতম হয় না!

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


1

পার্ল 5, 58 46 বাইট

$m=($n=/$/m+"@+")-2;s/A(|.{$m,$n})\KB|B(?=(?1)A)/+/s&&redo

Tio

-12 বাইটস @ গ্রিমিকে ধন্যবাদ

/.
/;s/A(|.{@{-}}.?.?)\KB|B(?=(?1)A)/+/s&&redo

Tio

  • -pপছন্দ -nতবে প্রিন্ট
  • -00 অনুচ্ছেদ মোড
  • প্রস্থ -১ পেতে /.\n/প্রথম লাইনের শেষ চরিত্রের সাথে মেলে
  • @{-} বিশেষ অ্যারে পূর্ববর্তী মিলিত গ্রুপগুলির ম্যাচ শুরুর অবস্থান, স্ট্রিং হিসাবে জোর করে (প্রথম উপাদান)
  • s/../+/s&&redo+ম্যাচ করার সময় ম্যাচ প্রতিস্থাপন
    • /sপতাকা, যাতে .নিউলাইন চরিত্রের সাথে মেলে
  • A(|.{@{-}}.?.?)\KB ম্যাচ
    • ABবা এর Aপরে (প্রস্থ -1) থেকে (প্রস্থ + 1) এর দ্বারা বর্ণিত অক্ষর রয়েছেB
    • \KBঅপরিবর্তিত বাম রাখা
  • B(?=(?1)A),
    • (?1) পূর্ববর্তী অভিব্যক্তি রেফারেন্স, ডাইভার্টিং পুনরাবৃত্তি (|.{$m,$o})
    • (?=..) lookahead, ইনপুট গ্রহণ না করে মেলে

-9 বাইট সহ /. /,@m=@-while s/A(|.{@m}.?.?)\KB|B(?=(?1)A)/+/s(প্রথম রেজেক্সে আক্ষরিক নিউলাইন)। টিআইও
গ্রিমি

1
46 থেকে ডাউন: /. /;s/A(|.{@{-}}.?.?)\KB|B(?=(?1)A)/+/s&&redoটিআইও
গ্রিমি

ধন্যবাদ,
আমারও

1

জাভা 8, 169 145 বাইট

m->{for(int i=m.length,j,k;i-->0;)for(j=m[i].length;j-->0;)for(k=9;m[i][j]==1&k-->0;)try{m[i][j]=m[i+k/3-1][j+k%3-1]<1?2:1;}catch(Exception e){}}

-২২ বাইটস @ অলিভিগ্রগ্রোয়ারকে ধন্যবাদ ।

ইনপুটটি 2D পূর্ণসংখ্যা-ম্যাট্রিক্স হওয়ার পরিবর্তে এবং পরিবর্তে ব্যবহার 0করে । বাইটগুলি সংরক্ষণ করতে কোনও নতুন ফেরতের পরিবর্তে ইনপুট-ম্যাট্রিক্স পরিবর্তন করে।A1B

কোষগুলি একই হিসাবে পরীক্ষা করা হয় সমস্ত একক আটটি চ্যালেঞ্জের জন্য আমার উত্তর

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

ব্যাখ্যা:

m->{                            // Method with integer-matrix parameter and no return-type
  for(int i=m.length,j,k;i-->0;)//  Loop over the rows
    for(j=m[i].length;j-->0;)   //   Inner loop over the columns
      for(k=9;m[i][j]==1&       //    If the current cell contains a 1:
          k-->0;)               //     Inner loop `k` in the range (9, 0]:
        try{m[i][j]=            //      Set the current cell to:
             m[i+k/3-1]         //       If `k` is 0, 1, or 2: Look at the previous row
                                //       Else-if `k` is 6, 7, or 8: Look at the next row
                                //       Else (`k` is 3, 4, or 5): Look at the current row
              [j+k%3-1]         //       If `k` is 0, 3, or 6: Look at the previous column
                                //       Else-if `k` is 2, 5, or 8: Look at the next column
                                //       Else (`k` is 1, 4, or 7): Look at the current column
               <1?              //       And if this cell contains a 0:
                  2             //        Change the current cell from a 1 to a 2
                 :              //       Else:
                  1;            //        Leave it a 1
        }catch(Exception e){}}  //      Catch and ignore ArrayIndexOutOfBoundsExceptions
                                //      (try-catch saves bytes in comparison to if-checks)

1
আমি খুব বেশি পরীক্ষা করে দেখিনি, তবে এতে কোনও ভুল আছে m[i+k/3-1][j+k%3-1]কি? 145 বাইট
অলিভিয়ার গ্রাগোয়ার

@ অলিভিয়ারগ্রোওয়ের ডাং, এটি এত সহজ .. ধন্যবাদ!
কেভিন ক্রুইজসেন

আমি মনে করি এটি পূর্ববর্তী চ্যালেঞ্জগুলির উত্তরগুলির জন্যও এটি বৈধ যা তাদের কাঠামোগুলির একই কাঠামো বলে মনে হচ্ছে
অলিভিয়ার গ্রাগোয়ার

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

1

পাওয়ারশেল , 86 80 বাইট

$p="(.?.?.{$(($args|% i*f '
')-1)})?"
$args-replace"(?s)(?<=A$p)B|B(?=$p`A)",'+'

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

মানচিত্রটি নতুন লাইনের সাথে একটি স্ট্রিং। এই স্ক্রিপ্টটি regexp এর সাথে প্রতিস্থাপন Bকরে ।+(?<=A(.?.?.{$MapWidth-1})?)B|B(?=(.?.?.{$MapWidth-1})?A)

কম গল্ফ টেস্ট স্ক্রিপ্ট:

$f = {
$l=($args|% indexOf "`n")-1
$p="(.?.?.{$l})?"
$args-replace"(?s)(?<=A$p)B|B(?=$p`A)",'+'
}

@(
,(@"
AAAAAAAAAA
ABAAAAAABA
ABBBAABABA
ABBBAABABA
ABBBBABABA
ABBBBABBBB
ABBBBABBBB
ABBBBBBBBB
BBBBBBBBBB
"@,@"
AAAAAAAAAA
A+AAAAAA+A
A+++AA+A+A
A+B+AA+A+A
A+B++A+A+A
A+BB+A++++
A+BB+A+BBB
A+BB+++BBB
++BBBBBBBB
"@)
,(@"
AAA
AAA
BBB
"@,@"
AAA
AAA
+++
"@)
,(@"
AAAAAAAAAA
AAAABBBAAA
AAAABBBAAA
AAAABBBAAA
AAAAAAAAAA
BBBBBBABBB
BBBBBBAABB
BBBAAAAABB
BBBBBBBBBB
"@,@"
AAAAAAAAAA
AAAA+++AAA
AAAA+B+AAA
AAAA+++AAA
AAAAAAAAAA
++++++A+++
BB++++AA+B
BB+AAAAA+B
BB+++++++B
"@)
) | % {
    $map,$expected = $_
    $result = &$f $map
    $result-eq$expected
    #$result # uncomment this line to display results
}

আউটপুট:

True
True
True



0

টিএসকিউএল, 252 বাইট

স্ট্রিংটি বিভক্ত করা খুব ব্যয়বহুল, যদি স্ট্রিংটি বিভক্ত হয়ে যায় এবং ইতিমধ্যে একটি টেবিলের মধ্যে বাইট গণনাটি 127 অক্ষর হয়। স্ক্রিপ্ট নীচে অন্তর্ভুক্ত এবং সম্পূর্ণ আলাদা। এই অনেক স্থান গ্রহণের জন্য দুঃখিত।

Golfed:

WITH C as(SELECT x,x/z r,x%z c,substring(@,x+1,1)v
FROM spt_values CROSS APPLY(SELECT number x,charindex(char(10),@)z)z
WHERE'P'=type)SELECT @=stuff(@,x+1,1,'+')FROM c WHERE
exists(SELECT*FROM c d WHERE abs(r-c.r)<2and
abs(c-c.c)<2and'AB'=v+c.v)PRINT @

Ungolfed:

DECLARE @ varchar(max)=
'AAAAAAAAAA
ABAAAAAABA
ABBBAABABA
ABBBAABABA
ABBBBABABA
ABBBBABBBB
ABBBBABBBB
ABBBBBBBBB
BBBBBBBBBB';

WITH C as
(
  SELECT x,x/z r,x%z c,substring(@,x+1,1)v
  FROM spt_values
  CROSS APPLY(SELECT number x,charindex(char(10),@)z)z
  WHERE'P'=type
)
SELECT
  @=stuff(@,x+1,1,'+')
FROM c
WHERE exists(SELECT*FROM c d 
         WHERE abs(r-c.r)<2 
           and abs(c-c.c)<2 and'AB'=v+c.v)
PRINT @

চেষ্টা কর

টিএসকিউএল, 127 বাইট (ইনপুট হিসাবে টেবিল ভেরিয়েবল ব্যবহার করে)

ম্যানেজমেন্ট স্টুডিওতে এই স্ক্রিপ্টটি সম্পাদন করুন - এটিকে পঠনযোগ্য করার জন্য "ক্যোয়ারী" - "পাঠ্যের ফলাফল" ব্যবহার করুন

--populate table variable
USE master
DECLARE @v varchar(max)=
'AAAAAAAAAA
ABAAAAAABA
ABBBAABABA
ABBBAABABA
ABBBBABABA
ABBBBABBBB
ABBBBABBBB
ABBBBBBBBB
BBBBBBBBBB'

DECLARE @ table(x int, r int, c int, v char)

INSERT @
SELECT x+1,x/z,x%z,substring(@v,x+1,1)
FROM spt_values
CROSS APPLY(SELECT number x,charindex(char(10),@v)z)z
WHERE'P'=type and len(@v)>number

-- query(127 characters)

SELECT string_agg(v,'')FROM(SELECT
iif(exists(SELECT*FROM @
WHERE abs(r-c.r)<2and abs(c-c.c)<2and'AB'=v+c.v),'+',v)v
FROM @ c)z

এটি ব্যবহার করে দেখুন - সতর্কতা আউটপুট নির্বাচন করা হয়েছে এবং পাঠযোগ্য নয়। মুদ্রণের সাথে পাঠযোগ্য হবে তবে এই পদ্ধতিটি ব্যবহার করা সম্ভব নয়


আপনি কী ভাবছেন যে আপনি যুক্তি হিসাবে কোনও টেবিল নিতে পারবেন না?
আদম

@ আদম কোনও আর্গুমেন্ট হিসাবে একটি টেবিল ব্যবহার করে কোড তৈরি করা খারাপ ধারণা নয় - আমি ঠিক এটি পেয়ে যাব
t-clausen.dk

@ অ্যাডম আমার ধারণা আমি ভুল ছিলাম, স্ক্রিপ্টটি 120 টি চরিত্রের জন্য কাজ করার জন্য, আমার ইনপুট হিসাবে টেবিল এবং বার্চার উভয়েরই প্রয়োজন হবে, আমি এটি আবার লিখি। এটি 151 টি অক্ষর নিয়েছে
t-clausen.dk 18:25
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.