আমার নুলিফায়ারগুলি অনুকূল করুন


12

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

গেমটিতে, আপনার উদ্দেশ্য হ'ল নালীফায়ার হিসাবে পরিচিত একটি অস্ত্র ব্যবহার করে ক্রিপার তৈরি করছে এমন ইমিটারগুলি ধ্বংস করা।

নুলিফায়ারগণ এই ব্যাসার্ধের যে কোনও নির্গমনকারীকে ধ্বংস করতে পারে:

 eee
eeeee
eenee
eeeee
 eee

প্রতিটি নুলিফায়ার সিএন একাধিক ইমিটারকে লক্ষ্য করে।

আপনার উদ্দেশ্য

একটি অ্যারের গঠিত 2D মানচিত্র simulating দেওয়া কিছুই এবং এমিটার্স যাই হোক না কেন আপনি যে অক্ষরগুলি পছন্দ সঙ্গে, হতে পারে স্পেস এবং বা সংখ্যা - শুধু তারা পার্থক্যসূচক হতে, আউটপুট nullifiers অনুকূল পরিমাণ সঙ্গে একই মানচিত্র এন (অথবা আপনি চান কি ) স্থাপন করা হয়েছে, যাতে নিঃসরণকারীদের ন্যূনফায়ারগুলির সাথে সর্বনিম্ন পরিমাণ ধ্বংস হয়।

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

দ্রুত বিধি:

  • ইনপুট: বহুমাত্রিক অ্যারে
  • ইনপুটটিতে দুটি অক্ষর থাকবে, যার অর্থ কিছুই নেই এবং ইমিটার , আপনার উত্তরে যা রয়েছে তা অন্তর্ভুক্ত করবেন
  • আউটপুট: বহুমাত্রিক অ্যারে
  • আউটপুটটিতে তিনটি অক্ষর থাকবে যার অর্থ কিছুই নেই , ইমিটার এবং নুলিফায়ার বা একটি পৃথক আউটপুট যদি ইনপুটটি অলসযোগ্য হয়
  • আপনি শুধুমাত্র প্রতিস্থাপন করতে পারি কিছুই একটি nullifier সঙ্গে চরিত্র
  • একটি নূলেফায়ার একাধিক প্রেরককে আঘাত করতে পারে এবং সর্বদা সীমার মধ্যে থাকা সমস্তগুলিকে আঘাত করবে
  • একটি নলিফায়ার উপরে উল্লিখিত অঞ্চলে আঘাত করতে পারে এবং সর্বদা এটি নির্গমনকারীদেরকে আঘাত করতে পারে
  • বাইট জিতে সংক্ষিপ্ত উত্তর
  • স্ট্যান্ডার্ড লুফোলস নিষিদ্ধ

উদাহরণ

ইনপুট:

[[ , ,e, , ],
 [ , , , , ],
 [e, , , ,e],
 [ , , , , ],
 [ , ,e, , ]]

আউটপুট:

 [[ , ,e, , ],
  [ , , , , ],
  [e, ,n, ,e],
  [ , , , , ],
  [ , ,e, , ]]

ইনপুট:

[[e,e,e,e,e],
 [e, , , ,e],
 [e, , , ,e],
 [e, , , ,e],
 [e,e,e,e,e]]

আউটপুট:

[[e,e,e,e,e],
 [e, ,n, ,e],
 [e, , , ,e],
 [e, ,n, ,e],
 [e,e,e,e,e]]

ইনপুট:

[[e, , , , , , ,e, ,e, , , ,e, ,e, ,e, ,e],
 [ , ,e, , ,e, , , ,e,e, , , , ,e, , , , ],
 [ , ,e, , , ,e, ,e, ,e, ,e, ,e, ,e, , , ],
 [e, , , ,e, ,e, , , , , , , , , , , ,e, ],
 [e, , ,e, , , , , ,e, ,e, ,e, ,e, , , ,e],
 [ , , ,e, ,e, ,e, , , , , , , , , ,e, , ],
 [ ,e,e, ,e, , , ,e, ,e,e, ,e, ,e, ,e, , ],
 [ , ,e, , , ,e, , , , , , , , ,e,e, ,e, ],
 [ , , ,e, , , , ,e,e, , , , , , , , ,e, ],
 [e, , , , , , ,e, , , ,e,e, ,e, , , , , ],
 [ ,e,e, , ,e, , , , ,e, , , , , , ,e, , ],
 [ , , ,e,e, ,e, ,e, , , ,e,e, ,e, ,e, ,e],
 [e,e, , , , ,e, , , ,e, , , , , , , , , ],
 [ , , ,e, , , , , ,e, , ,e, ,e, ,e, ,e, ],
 [ , , , ,e, ,e, , , , , , , , , , , , , ],
 [e,e, , ,e,e, , ,e, , ,e, ,e, ,e, ,e, ,e],
 [e, ,e, ,e, , ,e,e,e, , ,e, , , ,e, , ,e],
 [ , , , ,e, , , , , ,e, , , ,e, , , , , ],
 [ , ,e, , , ,e, ,e, , , ,e, , , , ,e, , ],
 [ , , ,e, ,e, ,e, , ,e,e, , ,e,e, , ,e, ]]

আউটপুট (এই আউটপুটটি হাতে তৈরি, এবং সর্বোত্তম আউটপুট নাও হতে পারে):

[[e, , , , , , ,e, ,e, , , ,e, ,e, ,e, ,e],
 [ , ,e, , ,e, , ,n,e,e, , , ,n,e, , , , ],
 [ ,n,e, , ,n,e, ,e, ,e, ,e, ,e, ,e, ,n, ],
 [e, , , ,e, ,e, , , , , , , , , , , ,e, ],
 [e, , ,e, , , , , ,e, ,e, ,e, ,e, , , ,e],
 [ , ,n,e, ,e, ,e, , , ,n, , , , , ,e, , ],
 [ ,e,e, ,e, ,n, ,e, ,e,e, ,e, ,e,n,e, , ],
 [ , ,e, , , ,e, , , , , , , , ,e,e, ,e, ],
 [ , , ,e, , , , ,e,e, , , , , , , , ,e, ],
 [e, ,n, , , , ,e, , , ,e,e, ,e, , , , , ],
 [ ,e,e, , ,e,n, , ,n,e, , , ,n, , ,e,e, ],
 [ , , ,e,e, ,e, ,e, , , ,e,e, ,e, ,e, ,e],
 [e,e, , , , ,e, , , ,e, , , , , , , , , ],
 [ , , ,e, ,n, , , ,e, , ,e, ,e, ,e, ,e, ],
 [ ,n, , ,e, ,e, , , , , , , ,n, , , ,n, ],
 [e,e, , ,e,e, , ,e,n, ,e, ,e, ,e, ,e, ,e],
 [e, ,e, ,e, , ,e,e,e, , ,e, , , ,e, , ,e],
 [ , , , ,e, , , , , ,e, ,n, ,e, , ,n, , ],
 [ , ,e, ,n, ,e, ,e, , , ,e, ,n, , ,e, , ],
 [ , , ,e, ,e, ,e, ,n,e,e, , ,e,e, , ,e, ]]

ইনপুট:

[[e,e],
 [e,e]]

আউটপুট:

null

আমি ব্যবহার করতে পারি 0, 1এবং 2বা অনুরূপ?
ব্যবহারকারী 202729

@ ব্যবহারকারী202729 হ্যাঁ, যতক্ষণ আপনি কোনটি নির্দিষ্ট করেন এবং এটি ধারাবাহিকভাবে রাখেন, IE যদি কোনও প্রেরক ইনপুটটিতে 1 হয় তবে একইভাবে আউটপুটটিতে এটি 1 হওয়া আবশ্যক
ট্রয়েস এমবি জেনসেন

1
আমি ক্রিপার ওয়ার্ল্ডকে ভালবাসি, অবশেষে লতার চূড়ান্ত চিহ্নগুলি নির্মূল করার জন্য এটি সর্বদা সন্তুষ্ট ছিল
জো কিং

1
@ edc65 কোড-গল্ফের পুরো পয়েন্টটি রানটাইম সম্পর্কে যত্ন না নিয়ে কোডের আকার হ্রাস করা।
ব্যবহারকারী 202729

2
আমি লতা বিশ্ব ভালবাসি!
অরপাল

উত্তর:


4

পাইথন 3 , 558 511 509 বাইট

from itertools import*
E=enumerate
L=len
def s(s):
 q=[(x,y)for y,r in E(s)for x,k in E(r)if k==w]
 for i in range(1,L(q)):
  for c in combinations(q,i):
   m=[l*1for l in s]
   for p in c:
    m[p[1]][p[0]]=n
    for y,r in E([list(r) for r in' xxx ,xxxxx,xxnxx,xxxxx, xxx '.split(',')]):
     for x,k in E(r):
      o=(p[0]-x+2,p[1]-y+2)
      if k==d and-1<o[0]<L(m[0])and-1<o[1]<L(m)and m[o[1]][o[0]]==e:
       m[p[1]-y+2][p[0]-x+2]=d
   if e not in ','.join([''.join(r)for r in m]):return(m)
print(s(m))

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

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

ইনপুট ( পরীক্ষার কেসগুলি আরও সহজভাবে লেখার জন্য পরিবর্তিত হয়েছে ) '' বা 'ই' প্রত্যাশা করে, যখন আউটপুট শূন্যকারকের জন্য '', 'এন' এবং একটি বাতিল শোধকের জন্য 'এক্স' ব্যবহার করে। ফাংশনটি প্রত্যাশিত ইনপুট নেয় যা প্রশ্নের মধ্যে বর্ণিত হয়েছিল।

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

মজার প্রশ্ন, ওপি! ক্রাইপার ওয়ার্ল্ড দুর্দান্ত এবং প্রশ্নের জন্য এটি একটি দুর্দান্ত অনুপ্রেরণা ছিল :)

সম্পাদনা করুন: -৪৪ বাইটস এরিক দি আউটগল্ফারকে ধন্যবাদ


8
দুঃখিত, তবে দেখে মনে হচ্ছে এটি কোনও গুরুতর প্রতিযোগিতামূলক প্রবেশ নয়। আপনার কাছে এটি অনুকূলিত করার সময় না পাওয়া পর্যন্ত আমি এটি মুছে ফেলার পরামর্শ দিচ্ছি।
এরিক আউটগল্ফার

2
উফফফফ, আমার খারাপ! আমার যোগ্যতার
সেরাটিতে

1
প্রতিটি স্তরের ইনডেন্টেশনের জন্য আপনার আসলে 2 টি স্পেসের প্রয়োজন নেই, 1 যথেষ্ট।
এরিক আউটগল্ফার

3

পাইথন 2 , 267 263 বাইট

from itertools import*
m=input()
E=enumerate
e=[(x,y)for y,a in E(m)for x,e in E(a)if e]
for n in count():
 for p in combinations(e,n):
	k=[l*1for l in m]
	for x,y in p:k[y][x]=2
	all(e+any(8>(y-Y)**2+(x-X)**2for X,Y in p)for y,a in E(m)for x,e in E(a))>0>exit(k)

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

0ইমিটারের 2জন্য, নুলিফায়ার এবং 1খালি জায়গার জন্য।


1

ওল্ফ্রাম ভাষা (গণিত) , 173 168 বাইট

t=ToExpression@$ScriptInputString
P=Position
p=t~P~0
q=t~P~2
Print@ReplacePart[t,Thread[p->LinearProgramming[1&/@p,(xBoole[Norm[x-#]^2<6]&/@p)/@q,1&/@q,0,Integers]]]

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

1 সেকেন্ডে বৃহত্তম পরীক্ষার কেস সমাধান করে ।

পুরো প্রোগ্রাম। একটি ফাংশন হিসাবে, এটি খাটো, কেবল 130 বাইট

ব্যবহার করুন 0জন্য  , 1জন্য nএবং 2জন্য e

এই প্রোগ্রামটি চ্যালেঞ্জের ইনপুট ফর্ম্যাট থেকে রূপান্তর করতে ব্যবহার করা যেতে পারে।

সেখানে কোন সমাধান চান ত্রুটি বার্তা প্রিন্ট হবে lpdimমত এই , বা lpsnfমত এই

Outerসংক্ষিপ্ত নাম থাকা সত্ত্বেও সংস্করণ ব্যবহার করে (আরও পাঠযোগ্য) যদিও 2 বাইট দীর্ঘ Outer: এটি অনলাইনে চেষ্টা করুন!


ব্যাখ্যা।

মনে রাখবেন যে এটি একটি পূর্ণসংখ্যার লিনিয়ার প্রোগ্রামিং সমস্যায় হ্রাস করা যেতে পারে।

প্রতিটি eঘর 2 এ স্থির করা হয়, প্রতিটি খালি ঘরটি একটি পূর্ণসংখ্যার পরিবর্তনশীল, যা হয় 0(খালি) বা 1(নালিফায়ার) হতে পারে। ভেরিয়েবলের স্থানাঙ্কের তালিকা ভেরিয়েবলে সংরক্ষণ করা হয় p। ( Positionযেটিতে tরয়েছে 0)

উদ্দেশ্যটি ব্যবহৃত নুলিফায়ারের সংখ্যা হ্রাস করা, সুতরাং সেই পূর্ণসংখ্যার ভেরিয়েবলগুলির যোগফল অবশ্যই হ্রাস করা উচিত। ( 1&/@p, একটি ভেক্টর সমস্ত সমন্বিত 1এবং দৈর্ঘ্যের সমান pদৈর্ঘ্যের সাথে, উদ্দেশ্য কার্যটি নির্দেশ করে)

2q6

এটি ম্যাট্রিক্স m= (xBoole[Norm[x-#]^2<6]&/@p)/@q(প্রতিটি উপাদানের জন্য q, 1বর্ধিত দূরত্ব ( Norm) এর সাথে সম্পর্কিত স্থানাঙ্কের pতুলনায় কম হলে 6) এবং ভেক্টর b= দিয়ে সারি তৈরি করুন 1&/@q

এর পরে ReplacePartএবং Threadভেরিয়েবল মানগুলিকে "প্রয়োগ" করে tএবং এটি মুদ্রণ করে।


Echoপরিবর্তে ব্যবহার করা যেতে পারে Printতবে আউটপুটটিতে পূর্ববর্তী থাকে >>
ব্যবহারকারী 202729

দুর্ভাগ্যক্রমে 1^p(পরিবর্তে 1&/@p) কাজ করে না ।
ব্যবহারকারী 202729
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.