এটা আগুনে মেরে ফেল


30

দাবি অস্বীকার: এই প্রশ্নের মধ্যে বর্ণিত গল্পটি সম্পূর্ণ কল্পিত, এবং কেবলমাত্র একটি পরিচিতি সরবরাহের উদ্দেশ্যে উদ্ভাবিত হয়েছিল।

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

তোমার কাজ:

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা ক্ষেত্রকে ইনপুট হিসাবে গ্রহণ করে এবং পুরো ক্ষেত্রটি ছাই হওয়া অবধি এর জ্বলন্ত ধাপগুলি প্রদান করে। আগুনে থাকা ক্ষেত্রের একটি নির্দিষ্ট অংশটি শিখার তীব্রতার প্রতিনিধিত্ব করে একটি পূর্ণসংখ্যা দ্বারা উপস্থাপিত হয়। "1" থেকে আগুন শুরু হয় এবং "2" এবং তারপরে "3" এ চলে যায় এবং আরও অনেক কিছু। একবার আগুন "4" এ পৌঁছলে, এটি সরাসরি (তির্যক নয়) সংলগ্ন অঞ্চলগুলিতে আগুনে জ্বলতে সক্ষম যেগুলি ধরবে। এটি একবার "8" এ পৌঁছে গেলে এটি পরবর্তী পুনরাবৃত্তিতে জ্বলতে থাকে এবং ছাইতে পরিণত হয়, এটি "এ" দ্বারা উপস্থাপিত হয়। যখন কোনও অঞ্চল এখনও আগুন দিয়ে স্পর্শ করে না, তখন এটি "0" দ্বারা প্রতিনিধিত্ব করা হয়। উদাহরণস্বরূপ, ক্ষেত্রটি যদি এমন দেখায়:

100
000

আপনার প্রোগ্রাম এটি আউটপুট করা উচিত:

100
000

200
000

300
000

410
100

520
200

630
300

741
410

852
520

A63
630

A74
741

A85
852

AA6
A63

AA7
A74

AA8
A85

AAA
AA6

AAA
AA7

AAA
AA8

AAA
AAA

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

ইনপুট:

ক্ষেত্রের শুরু করার অবস্থান, কোনও মানক আকারে যেমন উপরের মতো একটি নতুন রেখাযুক্ত-ডিলিমেটেড স্ট্রিং।

আউটপুট:

প্রতিটি পুনরাবৃত্তির ক্ষেত্রটি পোড়া হওয়ার সাথে সাথে একটি অ্যারে হিসাবে বা কোনও অক্ষর দ্বারা সীমিত স্ট্রিং হিসাবে।

পরীক্ষার কেস:

0301
000A
555
 |
 v
0301
000A
555

1412
010A
666

2523
020A
777

3634
030A
888

4745
141A
AAA

5856
252A
AAA

6A67
363A
AAA

7A78
474A
AAA

8A8A
585A
AAA

AAAA
6A6A
AAA

AAAA
7A7A
AAA

AAAA
8A8A
AAA

AAAA
AAAA
AAA

স্কোরিং:

এটি , বাইট জয়ের সর্বনিম্ন স্কোর!


1
আকারটি কতটা আলাদা হতে পারে? অ-আয়তক্ষেত্রাকার অংশগুলি কি সর্বদা ডান প্রান্তে "গর্ত" থাকে, না কি ক্ষেত্রের ফাঁকা স্থান থাকতে পারে?
পূর্কাকুডারী

3
4 এ আঘাত করা এমন কিছু কিছু সংলগ্ন স্কোয়ারগুলিতে আগুন শুরু করে, তবে 4 বা ততোধিক কিছুর শুরু হয় না? এটা খুব বাস্তববাদী নয়।
লাসল্লোক

14
"অস্বীকৃতি: এই প্রশ্নের মধ্যে বর্ণিত গল্পটি সম্পূর্ণ কল্পিত, এবং কেবলমাত্র একটি পরিচিতি সরবরাহের উদ্দেশ্যে উদ্ভাবিত হয়েছিল" " -> "আমি একজন দুষ্ট কৃষক [যারা খারাপ জিনিস করতে চায়]" দিয়ে শুরু হয়। খুব চালাক. জ্বলন্ত ক্ষেত্র এখন কেউ আপনার সাথে সম্পর্কিত করবে না ।
J_F_B_M

3
প্রাথমিক ছাইয়ের জন্য কি ক্ষেত্রটি দুটি করে আলাদা করা সম্ভব, যাতে এর অংশটি কখনও জ্বলতে না পারে?
aschepler

9
যদি 4 এর উপরে ছড়িয়ে না আগুন খুব বিরক্তিকর হয় তবে কল্পনা করুন যে 1-4 আগুনের তীব্রতা এবং 5-এ এটি জ্বলন্ত উপস্থাপন করে।
জেরেমি ওয়েরিচ

উত্তর:


1

এপিএল (ডায়ালগ) , ৫২ বাইট *

ধরে নিন ⎕IO←0যা অনেক সিস্টেমে ডিফল্ট। খালি স্লটগুলির জন্য 0, জ্বলন্ত নন ক্ষেত্রের জন্য 1, নতুন আগুনের জন্য 2, আগুন ছড়িয়ে দেওয়ার জন্য 5 এবং ছাইয়ের জন্য 10 ব্যবহার করে ক্ষেত্র গ্রহণ করে। ইনপুট অবশ্যই কমপক্ষে 3 × 3 হওয়া উচিত, যা অতিরিক্ত সমস্যা নেই কারণ অতিরিক্ত সারি এবং কলামগুলি জিরো (ওপির ফর্ম্যাটের ফাঁকা স্থান) দিয়ে প্যাড করা যেতে পারে।

{}{1=c4r←,⍵:1+4r/⍨9⍴⍳210cc}⌺3 3⍣{⍺≡⎕←⍵}

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

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

⍣{} পর্যন্ত পুনরাবৃত্তি করুন:

 পরবর্তি প্রজন্ম

 অনুরূপ

⎕←⍵ বর্তমান প্রজন্ম, আউটপুট

{}⌺3 3 প্রতিটি কক্ষটিকে তার মুর পাড়ায় প্রয়োগ করা এই ক্রিয়াটির ফলাফলের সাথে প্রতিস্থাপন করুন:

 ,⍵ ravel (সমতল) আর্গুমেন্ট; নয়টি উপাদান তালিকা দেয়

r←r কে  বরাদ্দ করুন

4⊃ চতুর্থ উপাদান বাছাই; কেন্দ্র, অর্থাত্ মূল ঘর মান

c← নির্ধারিত

1= এর সমান এক?

: যদি তাই হয় তবে:

  ⍳2 প্রথম থেকে te ntegers; 0 1

  9⍴আর দৈর্ঘ্যে নয়টি; 0 1 0 1 0 1 0 1 0

  r/⍨ ব্যবহার ফিল্টার (এই মাত্র লম্ব প্রতিবেশীদের পায়)

  4∊ চার জন কি এর সদস্য? (অর্থাৎ পরবর্তী প্রজন্মের মধ্যে কি পাঁচ জন থাকবে?)

  1+ এক যোগ কর; 1 আগুন না ধরলে বা 2 আগুন ধরলে

 অন্যথায় (যেমন বর্তমান মান 0 বা ≥ 2)

  ×cসি  এর সাইনাম

  c+সি প্লাস যে (যেমন আগুন লাগলে এক দ্বারা বৃদ্ধি)

  10⌊ সর্বনিম্ন দশ এবং এটি (ছাই জ্বলে না)


* ডায়ালগ ক্লাসিকের ⎕U233A পরিবর্তে ব্যবহার করে


ছোট, তবে বোর্ড পরিবর্তনগুলির সাথে ডিল করে না। একটি 3x3 এ আটকে গেছে।
সুমেরে

@ সুমের কি? বোর্ড আকার পরিবর্তন করে না, তাই না?
অ্যাডম

দুঃখিত, আমি পরিষ্কার ছিল না। আপনার উত্তরটি দুর্দান্ত, তবে আমি বুঝতে পারছি যে সমাধানটি একটি পরিবর্তনশীল মাপের বোর্ডের অনুমতি দেয় যা "ডানদিকে" ফাঁক থাকতে পারে বা নাও পারে। মাঝখানে গ্যাপগুলি পরিচালনা করার প্রয়োজন হয় না। "ডানদিকে" মনে হচ্ছে একটি ডান-নীচের অংশটি অনুপস্থিত বাদে একটি আকার -15 বোর্ড 4x4 হিসাবে নির্মিত হবে। ডানদিকের নীচের অংশটি নিখোঁজ পাওয়া বাদে একটি আকার -8 বোর্ড একটি 3x3 হিসাবে তৈরি করা হবে, ইত্যাদি আমি এইভাবে চ্যালেঞ্জের প্রয়োজনীয়তাগুলি পড়ি। আপনার উত্তরটি বর্তমানে সবচেয়ে সংক্ষিপ্ত, তবে কেবলমাত্র 3x3 দিয়ে কাজ করে।
সুমের

@ সুমের ওপি পরিষ্কারভাবে জানিয়েছে যে ইনপুট 2 ডি is আমি সংখ্যার ম্যাট্রিক্স হিসাবে ইনপুট নিই এবং শূন্য আকারে যে কোনও জায়গায় "খালি" স্লটগুলিকে অনুমতি দিই। যদিও আমার ইনপুটটির সর্বনিম্ন 3 × 3 হওয়া প্রয়োজন ( ওপি এটির অনুমতি দিয়েছে ) আমি কোনও বড় আকারের ইনপুট গ্রহণ করি। প্রকৃতপক্ষে, আপনি যদি এখানে লিঙ্কটি ক্লিক করেন তবে আপনি দেখতে পাবেন যে আমার দ্বিতীয় উদাহরণটি 2 × 3 নীচের ডানদিকে ফাঁকা রয়েছে cell
Adám

Gotcha। নিশ্চিত নয় কেন, তবে চেষ্টা করুন এখানে লিঙ্কটিতে সমস্যা রয়েছে (সম্ভবত আমার দোষ), যদিও আপনার নতুন ফর্ম্যাট লিঙ্কটি ভাল কাজ করে। ইজি: fire '0A000\n0A0A0\n0A0A0\n000A1'ফর্ম্যাট করাটিতে নিখুঁত কাজ করে তবে আমি প্রথম লিঙ্কটির সাথে কাজের সমতুল্য পাচ্ছি না। আমি সম্ভবত কিছু ভুল করছি। এটি আমার পক্ষে কাজ করে না:f ↑(0 0 0)(0 1 0)(0 0 0)
সুমেরে

15

পাইথন 3 , 232 বাইট

def f(j):
 k=[[int(min(9,j[x][y]+(j[x][y]>0)or 3in(lambda k,x,y:[k[i][j]for i,j in[[x-1,y],[x+1,y],[x,y-1],[x,y+1]]if(-1<i<len(k))and(-1<j<len(k[i]))])(j,x,y)))for y in range(len(j[x]))]for x in range(len(j))]
 if k!=j:print(k);f(k)

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

-3 বাইটস অন্যান্য ল্যাম্বডায় মার্জ করে f( অফিসে অগোছালো দেখায় তবে বাইট সাশ্রয় করে এবং
এটিই আমাদের যত্নশীল) -8 বাইটসকে মিঃ জেডার
-২ by বাইটসকে ওভস
-6 বাইটস ধন্যবাদ পিপারির জন্য ধন্যবাদ


উদাহরণের মতো আমি কীভাবে একটি ফাঁকা স্থান যুক্ত করব?
tuskiomi

10

জাভাস্ক্রিপ্ট (ES6), 217 210 207 204 193 192 190 বাইট

9হিসাবে ব্যবহার করার জন্য @ শ্যাগির পরামর্শ অনুযায়ী 2 বাইট সংরক্ষণ করা হয়েছে A

f=F=>[F,...(t=[],y=0,g=x=>(r=F[y])?(x||(t[y]=[]),r[x]+1)?(t[y][x]=r[x]<8?r[x]+(r[x]>0|[r[x-1],r[x+1],F[y-1]&&F[y-1][x],F[y+1]&&F[y+1][x]].includes(3)):9,g(x+1)):g(0,y++):t)(0)+""!=F?f(t):[]]

// test code
test=s=>{
  var test = document.querySelector("#in").value.split`\n`.map(e => Array.from(e).map(e => parseInt(e)));
  var out = f(test);
  document.querySelector("#out").innerHTML = out.map(e => e.map(e => e.join``).join`\n`).join`\n\n`;
};window.addEventListener("load",test);
<textarea id="in" oninput="test()">0301&#10;0009&#10;555</textarea><pre id="out"></pre>

9পরিবর্তে ব্যবহার করে A। পূর্ণসংখ্যার 2D অ্যারে হিসাবে ইনপুট। যেমন অ্যারের অ্যারে হিসাবে আউটপুট।


আপনি 9পরিবর্তে ব্যবহার করে কিছু সংরক্ষণ করতে পারেন A?
শেগি

7

বিশ্ব অনুকরণ (ইমোজি তে) , 1407 বাইট?

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

{"meta":{"description":"","draw":1,"fps":1,"play":true},"states":[{"id":0,"icon":"0","name":"","actions":[{"sign":">=","num":1,"stateID":"4","actions":[{"stateID":"1","type":"go_to_state"}],"type":"if_neighbor"}],"description":""},{"id":1,"icon":"1","name":"","description":"","actions":[{"stateID":"2","type":"go_to_state"}]},{"id":2,"icon":"2","name":"","description":"","actions":[{"stateID":"3","type":"go_to_state"}]},{"id":3,"icon":"3","name":"","description":"","actions":[{"stateID":"4","type":"go_to_state"}]},{"id":4,"icon":"4","name":"","description":"","actions":[{"stateID":"5","type":"go_to_state"}]},{"id":5,"icon":"5","name":"","description":"","actions":[{"stateID":"6","type":"go_to_state"}]},{"id":6,"icon":"6","name":"","description":"","actions":[{"stateID":"7","type":"go_to_state"}]},{"id":7,"icon":"7","name":"","description":"","actions":[{"stateID":"8","type":"go_to_state"}]},{"id":8,"icon":"8","name":"","description":"","actions":[{"stateID":"9","type":"go_to_state"}]},{"id":9,"icon":"A","name":"","description":"","actions":[]}],"world":{"update":"simultaneous","neighborhood":"neumann","proportions":[{"stateID":0,"parts":100},{"stateID":1,"parts":0},{"stateID":2,"parts":0},{"stateID":3,"parts":0},{"stateID":4,"parts":0},{"stateID":5,"parts":0},{"stateID":6,"parts":0},{"stateID":7,"parts":0},{"stateID":8,"parts":0},{"stateID":9,"parts":0}],"size":{"width":9,"height":9}}}

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

<iframe width="100%" height="450" src="http://ncase.me/simulating/model/?remote=-Kr2X939XcFwKAunEaMK" frameborder="0"></iframe>


6

রেটিনা , 103 96 88 বাইট

^
¶
;{:`

T`0d`d
(?<=¶(.)*)0(?=4|.*¶(?<-1>.)*(?(1)_)4|(?<=40|¶(?(1)_)(?<-1>.)*4.*¶.*))
1

এটি অনলাইন চেষ্টা করুন! 9ছাই জন্য ব্যবহার ; এটি ব্যবহার করে 4 বাইট ব্যবহার করে পরিবর্তন করা যেতে পারে T`1-8`2-8A। সম্পাদনা করুন: @ মার্টিনইেন্ডারে ধন্যবাদ 6 টি বাইট সংরক্ষণ করা হয়েছে। ব্যাখ্যা:

^
¶

একটি বিভাজক যুক্ত করুন যাতে ফলাফলগুলি একে অপরের মধ্যে না চলে run (নীচে মিলে যাওয়ার ক্ষেত্রেও সহায়তা করে))

;{:`

চূড়ান্ত অবস্থা মুদ্রণ করবেন না (যা পূর্ববর্তী রাষ্ট্রের মতো যা ইতিমধ্যে মুদ্রিত হয়েছে)। পাসের অবস্থা পরিবর্তন না হওয়া পর্যন্ত পুনরাবৃত্তি করুন। প্রতিটি পাসের আগে বর্তমান অবস্থা মুদ্রণ করুন।

T`0d`d

সমস্ত আগুনের তীব্রতা অগ্রসর করুন।

(?<=¶(.)*)0(?=4|.*¶(?<-1>.)*(?(1)_)4|(?<=40|¶(?(1)_)(?<-1>.)*4.*¶.*))
1

যথাযথ হিসাবে হালকা সরল ক্ষেত্র। উপ-ব্যাখ্যা:

(?<=¶(.)*)

এই আনলিট ফিল্ডের কলাম নম্বর পরিমাপ করুন।

0

আনলিট ফিল্ডের সাথে মেলে।

(?=4

ডানদিকে উপযুক্ত ক্ষেত্রের সন্ধান করুন।

  |.*¶(?<-1>.)*(?(1)_)4

নীচের লাইনে একই কলামে (ভারসাম্যপূর্ণ দল ব্যবহার করে) উপযুক্ত ক্ষেত্রটি অনুসন্ধান করুন। মনে রাখবেন যে যদি ইনপুটটি আয়তক্ষেত্রের গ্যারান্টিযুক্ত হতে পারে তবে |.*¶(?>(?<-1>.)*)4এটি 3 বাইট সংরক্ষণের জন্য সহজ করা যেতে পারে ।

  |(?<=40

বাম দিকে উপযুক্ত ক্ষেত্রের সন্ধান করুন। (যেহেতু আমরা মাঠের ডান দিক থেকে খুঁজছি, তাই আমরা আনলিট ফিল্ডটিও দেখতে পাচ্ছি))

      |¶(?(1)_)(?<-1>.)*4.*¶.*))

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


5

পার্ল 5 , 365 বাইট

@a=map{[/./g]}<>;do{say@$_ for@a;say;my@n=();for$r(0..$#a){$l=$#{$a[$r]};for(0..$l){$t=$a[$r][$_];$n[$r][$_]=($q=$n[$r][$_])>$t?$q:$t==9?9:$t?++$t:0;if($t==4){$n[$r-1][$_]||=1if$r&&$_<$#{$a[$r-1]};$n[$r+1][$_]||=1if$r<$#a&&$_<$#{$a[$r+1]};$n[$r][$_-1]||=1if$_;$n[$r][$_+1]||=1if$_<$l}}}$d=0;for$r(0..$#a){$d||=$a[$r][$_]!=$n[$r++][$_]for 0..$#{$a[$r]}}@a=@n}while$d

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

বার্ন করা স্থান নির্দেশ করতে 'A' এর পরিবর্তে '9' ব্যবহার করে।

ব্যাখ্যা

@a=map{[/./g]}<>;   # split input into a 2-D array

do{
say@$_ for@a;say;   # output the current state
my@n=();            # holds the next iteration as it's created
for$r(0..$#a){      # loop through rows
  $l=$#{$a[$r]};    # holder for the length of this row
  for(0..$l){
    $t=$a[$r][$_];  # temporary holder for current value
    $n[$r][$_]=($q=$n[$r][$_])>$t?$q:$t==9?9:$t?++$t:0; #update next iteration
    if($t==4){      # ignite the surrounding area if appropriate
      $n[$r-1][$_]||=1if$r&&$_<$#{$a[$r-1]};
      $n[$r+1][$_]||=1if$r<$#a&&$_<$#{$a[$r+1]};
      $n[$r][$_-1]||=1if$_;
      $n[$r][$_+1]||=1if$_<$l
    }
  }
}
$d=0;              # determine if this generation is different than the previous
for$r(0..$#a){$d||=$a[$r][$_]!=$n[$r++][$_]for 0..$#{$a[$r]}}
@a=@n              # replace master with new generation
}while$d

4

হাস্কেল , 162 বাইট

import Data.List
i x|x<'9'=succ x|1<2=x
f('3':'@':r)="30"++f r
f(x:r)=x:f r
f e=e
a%b=a.b.a.b
g=map(i<$>).(transpose%map(reverse%f))
h x|y<-g x,y/=x=x:h y|1<3=[x]

এটি অনলাইন চেষ্টা করুন! ব্যবহার: hলাইনগুলির তালিকা হিসাবে একটি ক্ষেত্র নেয় এবং ক্ষেত্রগুলির একটি তালিকা প্রদান করে। একটি unburned ক্ষেত্র দ্বারা করা হয় @এবং ছাই দ্বারা 9, বিভিন্ন দাবানল ডিজিটের হয় 1থেকে 8

  • f@জ্বলন্ত 3ক্ষেত্রের ডানদিকে থাকা সমস্ত জ্বলিত ক্ষেত্র প্রতিস্থাপন করে বাম থেকে ডানে আগুনের বিস্তার পরিচালনা করে0
  • iযতটা কম তার চেয়ে কম প্রতিটি ডিজিট বৃদ্ধি করে 9
  • gfপ্রতিটি লাইনে প্রযোজ্য , তারপরে লাইনটি বিপরীত করে, fআবার প্রয়োগ করে এবং পিছনে বিপরীত হয়। তারপরে লাইনের তালিকাটি প্রতি লাইনে আবার স্থানান্তরিত হয় এবং এর বিপরীত fপ্রয়োগ করা হয়।
  • hইনপুটটিতে প্রয়োগ gকরা হয় যতক্ষণ না এটি আর পরিবর্তন হয় না এবং ফলাফলগুলি সংগ্রহ করে না।

ইনপুট "" @ 3 @ 1 \ n ব্যর্থ 9 "55 প্রথম পুনরাবৃত্তির পরে শীর্ষ লাইন। ফিক্সিং এটি দুর্দান্ত হবে, ধন্যবাদ!
গ্রিফন - মনিকা পুনরায়

@ গ্রিফোন এই স্থানচ্যুতিটি ম্যাট্রিক্স অক্ষর স্থানান্তরিত করার কারণে ঘটে। এটি কাজ করে অন্যান্য লাইনের কিছু চরিত্র যা ক্ষেত্র, আগুন বা ছাই, যেমন তন্ন তন্ন প্রতিনিধিত্ব করে দিয়ে একই দৈর্ঘ্য আনা হয় _। যদি এটি গ্রহণযোগ্য না হয় তবে আমি ভয় করি যে আমাকে উত্তরটি মুছে ফেলতে হবে, কারণ এটি ব্যবহারের চারপাশে কেন্দ্রিক transposeএবং আমি টন বাইট প্রবর্তন না করে সহজেই এটিকে ঠিক করার কোনও উপায় দেখতে পাচ্ছি না।
লাইকনি

4

সি (জিসিসি) , 308 305 299 297 295 291 বাইট

#define F B[i][v]
m(A,B,k,y,m,U,i,v)char**B;{do{for(i=k=y=0;i<A;puts(""),++i)for(v=0;v<(m=strlen(B[i]));F=(U=F)>48&&F<56?F+1:F>55?65:(i+1<A&&B[i+1][v]==51||v+1<m&&B[i][v+1]==51||v-1>-1&&B[i][v-1]==52||i-1>-1&&B[i-1][v]==52)&&U<49?49:F,putchar(U),k+=U<49||U>64,++y,++v);puts("");}while(k-y);}

এই প্রোগ্রামটি একটি ফাংশন যা দ্বারা অনুমোদিত, তার দৈর্ঘ্য পূর্বে স্ট্রিং একটি অ্যারে দুই ইনপুট, একটি পয়েন্টার লাগে সংজ্ঞায়িত এই ইনপুট / আউটপুট ডিফল্ট। একটি ট্রেলিং করা নতুন লাইন সহ STDOUT এ আউটপুট।

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


ইনপুটটিতে চিরকাল চলে 80
aschepler

@ এসচেপলার দুঃখিত! আমি ধরে নিয়েছি যে সমস্ত চরিত্র অবশ্যই এস-এ পরিণত হবে A, তবে দৃশ্যত আমি ভুল ধরে নিয়েছি। যাইহোক, তথ্যের জন্য ধন্যবাদ। এটা এখন ঠিক।
আর কাপ,


@ জিয়াকোমো গারাবেলো আমি বিশ্বাস করতে পারি না আমি সেই কৌশলটি ভুলে গেছি। আমাকে মনে করার জন্য ধন্যবাদ! :)
আর কাপ 18 ই

4

অক্টাভা, 72 69 বাইট

a=input(''),do++a(a&a<9);a+=imdilate(a==4,~(z=-1:1)|~z')&~a,until a>8

ইনপুটটি 2D সংখ্যার অ্যারে, এবং চিহ্নিত ফাঁকা দাগ হিসাবে নেওয়া হয় Inf'A'সঙ্গে প্রতিস্থাপন করা হয়েছে9 । অন্তর্বর্তী ফলাফল (সংখ্যার অ্যারে হিসাবে) সুস্পষ্টভাবে মুদ্রিত।

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

ব্যাখ্যা:

একটি লুপে imdilateচিত্র প্যাকেজ থেকে ফাংশন (রূপচর্চা চিত্র প্রসারণ) অগ্নি প্রসারণ অনুকরণ করতে ব্যবহৃত হয়।


1
এটি সমস্ত আকারের বোর্ডগুলির সাথে এবং এমনকি একগুচ্ছ ছিদ্রগুলির সাথেও কাজ করে। ইজি: [0 Inf 0 0 0;0 Inf 0 Inf 0;0 Inf 0 Inf 0;0 0 0 Inf 1]- খুব সুন্দর
সুমের

1

পাইথন 2 , 325 বাইট

def f(x):
 while{i for m in x for i in m}>{9,''}:
    yield x;i=0
    for l in x:
     j=0
     for c in l:
        if 0<c<9:x[i][j]+=1
        j+=1
     i+=1
    i=0
    for l in x:
     j=0
     for c in l:
        if c==0 and{1}&{x[k[1]][k[2]]==4for k in[y for y in[[i,i-1,j],[i<len(x)-1,i+1,j],[j,i,j-1],[j<len(l)-1,i,j+1]]if y[0]]}:x[i][j]+=1
        j+=1
     i+=1
 yield x

fইনপুটটিকে 2D অ্যারে সংখ্যার এবং খালি দাগগুলিতে চিহ্নিত হিসাবে নেয় '''A'সঙ্গে প্রতিস্থাপন করা হয়েছে9 । ফাংশন একই আকারে সময়ের সাথে সাথে সমস্ত ক্ষেত্রের জেনারেটর আউটপুট করে।

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


1

অক্টাভা , 212 বাইট

function r(f)b=48;f-=b;c=-16;l=f~=-c;d=17;p=@(x)disp(char(x+b));g=@()disp(' ');p(f);g();while~all(any(f(:)==[0 d c],2))m=f>0&l;f(m)+=1;k=conv2(f==4,[0 1 0;1 0 1;0 1 0],'same')&~m&l;f(k)+=1;f(f>8&l)=d;p(f);g();end

চালানোর জন্য, একটি অক্ষর অ্যারে উল্লেখ করুন:

f = ['0301','000A','555 '];

... তাহলে কর:

r(f)

কোডটি অনুসরণ করার ব্যাখ্যা ...

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

দ্রষ্টব্য: আমি এই কোডটি টিওআরুন দিয়ে চালানোর চেষ্টা করেছি , কিন্তু আমি কোনও আউটপুট পাচ্ছি না। আমাকে অন্য একটি পরিষেবা ব্যবহার করতে হয়েছিল।


সত্যিই ঠিক এই মুহুর্তে আমি আপনি আমার সামনে উত্তর
দিনটির

1

পিএইচপি, 226 212 210 209 185 177 বাইট

for($f=file(m);$f!=$g;print"
")for($g=$f,$y=0;$r=$f[$y++];)for($x=-1;~$c=$r[++$x];$f[$y-1][$x]=$c=="0"?strstr($g[$y-2][$x].$r[$x-1].$f[$y][$x].$r[$x+1],51)/3:min(++$c,9))echo$c;

নামের একটি ফাইল থেকে ট্রেলিং করা নতুন লাইনের সাথে ইনপুট নেয় m ;9ছাই জন্য

এটি দিয়ে চালান -nrবা অনলাইনে চেষ্টা করুন


প্রথম পদ্ধতির: পিএইচপি 7.0, 209 বাইট

for($f=$g=file(m);trim(join($f),"A
");print"
".join($f=$g))for($y=-1;(a&$c=$r[++$x])||$r=$f[$y-=$x=-1];)for(+$c&&$g[$y][$x]=++$c<9?$c:A,$a=4;$a--;$q=$p)$c-4|($w=&$g[$y+$p=[1,0,-1][$a]])[$q+=$x]!="0"||$w[$q]=1;

নামের একটি ফাইল থেকে ট্রেলিং করা নতুন লাইনের সাথে ইনপুট নেয় m

সঙ্গে চালানো -nrবাএটি অনলাইনে চেষ্টা করুন

পিএইচপি সংস্করণ নোট (পুরানো পদ্ধতির জন্য)

  • পিএইচপি 7.0 এর চেয়ে পুরানো জন্য, পরে সবকিছু প্রতিস্থাপন $c-4| সঙ্গে$g[$y+$p=[1,0,-1][$a]][$q+=$x]!="0"||$g[$y+$p][$q]=1;
  • 5.5 এর চেয়ে পুরানো পিএইচপি-র জন্য, প্রতিস্থাপন করুন [1,0,-1][$a] সাথে$a%2*~-($a&2)
  • পিএইচপি তুলনায় 7.0 নতুন জন্য, প্রতিস্থাপন a&$cসঙ্গে ""<$c, +$cসঙ্গে 0<$cএবং $c-4সঙ্গে$c!=4

অন্যান্য পরীক্ষার মামলায় কাজ করে না ... স্যান্ডবক্স.অনলাইনপ্পফিউশনস
কোড /

@ g19fanatic স্থির & গল্ফড লক্ষ্য করার জন্য ধন্যবাদ
তিতাস

0

অক্টাভা, 419 312 বাইট

M=input('') %take a matrix M as input
[a, b]=size(M); %size M for later
while mean(mean(M))!=9 %while the whole matrix M isn't ashes
M=M+round(M.^0.001); %if there is a nonzero int add 1 to it
for i=1:a %loop over all values of M
for j=1:b
if(M(i,j)==4) %if a value of 4 is found, ignite the zeros around it
if(M(max(i-1,1),j)==0) M(i-1,j)++;end
if(M(min(i+1,a),j)==0) M(i+1,j)++;end
if(M(i,max(j-1,1))==0) M(i,j-1)++;end      
if(M(i,min(j+1,b))==0) M(i,j+1)++;end
elseif(M(i,j)==10) M(i,j)--;
end
end
end
M %display the matrix
end

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

এটি আমার সংস্করণ এটির কাজ করে, তাই এখন আমার এটি গল্ফ করা দরকার। আমি মনে করি যদি আমি একটি ম্যাট্রিক্সে 4 এর সূচকগুলি খুঁজে পাওয়ার কোনও উপায় খুঁজে পাই তবে এটি আরও সংক্ষিপ্ত হতে পারে তবে কীভাবে তা আমি জানি না।
PS: A আমার কোডে 9 জন।


2
এর পরিবর্তে endif endforএবং endwhileআপনি লিখতে পারেনend
rahnema1

0

স্টেনসিল ( -মোড) , 22 বাইট

S8:'A'0::S⋄(3N)⌈S+s

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

পরীক্ষার ইনপুটগুলির মতো , ফাঁকা এবং 0- এর জন্য স্পেস দ্বারা পৃথক পূর্ণসংখ্যা ব্যবহার করুন8' ''A' জন্য A। ট্রেলিং ফাঁকাগুলিও যুক্ত করতে ভুলবেন না।

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