আমি কি সময়মতো এটি তৈরি করব?


37

দ্বারা অনুপ্রাণিত এই

পটভূমি

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

চ্যালেঞ্জ

গম, আগুন এবং আপনার অবস্থান সম্বলিত একটি ক্ষেত্র দেওয়া, আপনি সময়মতো ক্ষেত্রের বাইরে এড়াতে পারবেন কিনা তা নির্ধারণ করুন।

একটি ক্ষেত্র গম (এখানে প্রতিনিধিত্ব করে .) এবং আগুন ( F) দ্বারা গঠিত । এখানে আপনার অবস্থানটি একটি দ্বারা চিহ্নিত করা হয়েছে O। উদাহরণ স্বরূপ:

...F...F
F.......
........
.F......
....O...
...F....
........
.F....F.

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

...F...F
F.......
........
.F......
....O...
...F....
........
.F....F.

..FFF.FF
FF.F...F
FF......
FFF.....
.F.F.O..
..FFF...
.F.F..F.
FFF..FFF

FFFFFFFF
FFFFF.FF
FFFF...F
FFFF....
FF.FF.O.
.FFFFFF.
FFFFFFFF
FFFFFFFF

FFFFFFFF
FFFFFFFF
FFFFF.FF
FFFFF.FF
FFFFFFFO
FFFFFFFF
FFFFFFFF
FFFFFFFF

FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFFO <-- you made it out and survived, barely
FFFFFFFF
FFFFFFFF
FFFFFFFF

বিধি

  • আপনার ইনপুটটি গ্রিড হিসাবে ক্ষেত্র। আপনি লাইন বিভাজক বা একটি 2D অ্যারে সহ স্ট্রিং সহ যে কোনও ইনপুট ফর্ম্যাট বেছে নিতে পারেন।
    • আপনি আগুনের জন্য এবং / অথবা নিজের জন্য ইনপুট হিসাবে গ্রহণ নাও করতে পারেন।
    • অ্যারে ইনপুটটির জন্য নন-স্ট্রিং সহ আপনি গম, আগুন এবং আপনার অবস্থান হিসাবে কোনও 3 স্বতন্ত্র মান ব্যবহার করতে পারেন।
    • ক্ষেত্রগুলি সর্বদা কমপক্ষে 1x1 আকারের, আয়তক্ষেত্রাকার থাকে এবং এতে কোনও অবৈধ অক্ষর থাকে না।
    • যে কোনও ক্ষেত্রে আপনার অবস্থানের প্রতিনিধিত্ব করে এমন মানগুলির মধ্যে একটি হ'ল অন্তর্ভুক্ত থাকবে এবং অন্য প্রতিটি অবস্থান আগুনে থাকতে পারে বা নাও পারে।
  • হিসাবে যথারীতি আপনার আউটপুট হ'ল "আপনি বেঁচে যান" বা "আপনি মারা যান" এর জন্য দুটি স্বতন্ত্র মানগুলির মধ্যে
  • স্ট্যান্ডার্ড বিধি প্রযোজ্য।

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

উদ্বর্তিত

O
....
.O..
....
FFFFF
.....
..O..
.....
FFFF
FFFO
FFFF
.F....
......
......
.F....
..O...
.FF...
.F....
..FF..
...F...F
F.......
........
.F......
....O...
...F....
........
.F....F.

বাঁচেনি

FFF
FOF
FFF
F.F
.O.
F.F
....F
.....
..O..
.....
F....
.F....F.
........
........
F..O....
........
.....F..
...F...F
F......F
........
.F......
....O...
...F....
........
.F....F.
F..F
.O..
FF..

2
আমি দেখতে পাচ্ছি না যে কেন কেউ নিম্নচাপে পড়েছে
অলিভার নি

3
উভয় ডাউনওয়োটারের কাছে, দয়া করে ব্যাখ্যা করুন কেন আমার চ্যালেঞ্জ খারাপ।
পূর্বকুডারী

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

2
আমি Pietu1998 এর সাথে একমত, আমিও মনে করি যে এই সীমাবদ্ধতা অত্যন্ত উপযুক্ত।
মিস্টার এক্সকডার

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

উত্তর:


28

শামুক, 15 বাইট

\Oo!{.,fee7.,\F

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

1মানে বেঁচে থাকার 0অর্থ মৃত্যু।

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


1
O_o আপনি কি কোনও পরীক্ষার লিঙ্ক সরবরাহ করতে পারেন? এটি খুব সংক্ষিপ্ত বলে মনে হচ্ছে।
মিঃ এক্সকোডার

10
কোডটি প্রায় বলে চলেছে: "ওঁ!" ... "ভাও" ...
ম্যাজিক অক্টোপাস উরান


6
@ ফেয়ারসাম "এটি চেষ্টা করুন অনলাইনে" লিঙ্কে, আমি নিম্নলিখিত 3-লাইনের গম ক্ষেতটি চেষ্টা করেছি, যা মৃত্যু হওয়া উচিত, তবে প্রোগ্রামটি মনে করে আপনি এটি বেঁচে থাকতে পারবেন: "এফ..এফ", ".ও ..", " এফএফ .. "
Xantix


12

পাইথন 2 , 283 218 209 208 বাইট

lambda F:f(F)&f(F[::-1])
def f(F):l=F.split();w=len(l[0])+1;i=F.index('O');x,y=i/w,i%w;r=range(len(l));return all('F'in''.join(n)for n in[[l[i][x+abs(i-y):]for i in r],[l[i][max(0,y+x-i):i+x-y+1]for i in r]])

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

একটি নতুন লাইন পৃথক স্ট্রিং হিসাবে ইনপুট নেয় এবং এর True/Falseজন্য ফিরে আসেDead/Alive

Fবাহ্যিক দিকে তাকিয়ে ইয়ারের জন্য প্রতিটি দিক (udlr) পরীক্ষা করে কাজ করে :

উদাহরণ:

ইনপুট:

FFFFF
.....
..O..
.....

ফায়ার চেক:

Up:       Down:     Left:     Right:

FFFFF               F             F
 ...                ..           ..
  O         O       ..O         O..
           ...      ..           ..

যদি সমস্ত দিকগুলিতে আগুন থাকে তবে আপনি মারা যান, অন্যথায় একটি পালাতে পারে।

সম্পাদনা করুন: ইনপুট হিসাবে স্ট্রিং নেওয়ার দিকে ফিরে যান এবং এখন কেবল উপরে / ডানদিকে পরীক্ষা করে, তবে ইনপুটটি পিছনের দিকেও পরীক্ষা করে (নীচে / বামে দেওয়া)

মিঃ এক্সকোডার এবং ফেলিপ নারদী বাটিস্তার ধন্যবাদ দিয়ে প্রচুর বাইট সংরক্ষণ করা হয়েছে


@ ফিলিপ নরদীবাটিস্টাকে ধন্যবাদ :)
টিফিল্ড


2

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

a=>+(t=>g=a=>t--?g(a.map((l,y)=>l.map((c,x)=>(h=v=>[(a[y-1]||[])[x],(a[y+1]||[])[x],a[y][x+1],a[y][x-1],c].includes(v),!c&&h()?p=1:[2,0,1].find(h))))):p)((p=a+'!').length)(a)

ছক পূরণ করা:

  • পূর্ণসংখ্যার অ্যারের অ্যারে
  • 2 জন্য F, 1 জন্য ., 0 জন্যO

আউটপুট:

  • বেঁচে থাকার জন্য সত্যবাদী মান (1)
  • মরার জন্য মিথ্যা মান (NaN)

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

একটি সেলুলার অটোমেটন বিবেচনা করুন। একটি কক্ষের জন্য 3 টি রাষ্ট্র রয়েছে O(লোকেদের কাছে পৌঁছানো যায়), F(ধরা পড়ে গুলি চালানো), .(কিছুই ঠিক হয়নি)। পরবর্তী প্রজন্ম তৈরির নিয়মটি হ'ল:

for each cell:
  me and my 4 neighborhoods,
    if anyone is `F` then result is `F`,
    otherwise, if anyone is `O` then result is `O`
    otherwise, keep state `.`

প্রান্তে যখন কোনও ঘরে একটি কক্ষ Oথাকে তখন লোকেরা বেঁচে থাকে। এটি যদি পর্যাপ্ত পরিমাণে উত্পাদনে না ঘটে তবে লোকেরা মারা গেল।

// check for all neighbors:
h=v=>[(a[y-1]||[])[x],(a[y+1]||[])[x],a[y][x+1],a[y][x-1],c].includes(v)
// if me == 'O' and i'm edge (neighbors contain _undefined_), then survive
!c&&h()?p=1
// Otherwise apply the given rule
:[2,0,1].find(h)

2

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

@(a)(A=blkdiag(0,a,0))<3||any((bwdist(A>2,'ci')>bwdist(A==2,'ci'))(!A))

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

অথবা

সমস্ত পরীক্ষার কেস যাচাই করুন!

ছক পূরণ করা:

  • পূর্ণসংখ্যার 2D অ্যারে
  • 1জন্য ., 2জন্য Oএবং 3জন্যF

আউটপুট:

  • true এবং false

ব্যাখ্যা:

ব্যাখ্যা:

A=blkdiag(0,a,0)    % add a boundary of 0s around the array
A<3                 % return truthy when there is no fire
bwdist(A>2,'ci')    % city block distance transform of binary map of fire
bwdist(A==2,'ci')   % city block distance transform of binary map of your location
any(...)(!A)        % check if there is at least one element on the boundary of 
                    % the fire distance map has its distance greater than 
                    % that of distance map of your location

1

রেটিনা , 243 বাইট

^.*O(.|¶)*|(.|¶)*O.*$|(.|¶)*(¶O|O¶)(.|¶)*
O
m`^((.)*) (.*¶(?<-2>.)*(?(2)(?!))O)
$1#$3
m`^((.)*O.*¶(?<-2>.)*(?(2)(?!))) 
$1#
T`p`\O`#| ?O ?
+m`^((.)*)[O ](.*¶(?<-2>.)*(?(2)(?!))F)
$1#$3
+m`^((.)*F.*¶(?<-2>.)*(?(2)(?!)))[O ]
$1#
}T`p`F`#|.?F.?
O

এটি অনলাইন চেষ্টা করুন! .এর চেয়ে ব্যাকগ্রাউন্ডটি ফাঁকা হওয়ার প্রয়োজন (বা কিছু অন্যান্য রেজিপ্যাক্স-নিরাপদ অক্ষর ব্যবহার করা যেতে পারে)। ব্যাখ্যা:

^.*O(.|¶)*|(.|¶)*O.*$|(.|¶)*(¶O|O¶)(.|¶)*
O

যদি Oকোনও প্রান্তে থাকে, তবে সমস্ত কিছু মুছুন (বেঁচে থাকার কেস)

m`^((.)*) (.*¶(?<-2>.)*(?(2)(?!))O)
$1#$3

#বিদ্যমান অবস্থার উপরে যে কোনও জায়গাতে একটি রাখুন O

m`^((.)*O.*¶(?<-2>.)*(?(2)(?!))) 
$1#

এবং একটি #বিদ্যমানের নীচে যে কোনও স্থানের একটি O

T`p`\O`#| ?O ?

#S Oগুলি এবং কোনও স্থানের বাম বা ডানদিকে কোনও স্থান পরিবর্তন করুন O

+m`^((.)*)[O ](.*¶(?<-2>.)*(?(2)(?!))F)
$1#$3

যে #কোনও বিদ্যমান Fs এর উপরে s রাখুন । এগুলি Oস্থানগুলি পাশাপাশি ওভাররাইট করতে পারে ।

+m`^((.)*F.*¶(?<-2>.)*(?(2)(?!)))[O ]
$1#

যে #কোনও বিদ্যমান Fগুলি এর নীচে রাখুন , ওভাররাইটিং Oপাশাপাশি ফাঁকা স্থান।

}T`p`F`#|.?F.?

এসকে #গুলি Fএবং কোনও Oবা স্থান বা বিদ্যমান বা বাম বা ডানদিকে পরিবর্তন করুন F। এসগুলি Fসমস্ত গ্রাস না করা পর্যন্ত পুনরাবৃত্তি করুন ।

O

1বেঁচে থাকার জন্য ফিরে , 0যদি না।

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