আমার অ্যাভোকাডোস জুস করতে আমাকে সহায়তা করুন


14

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

ইনপুট হিসাবে, আপনি mএক্স mস্কোয়ার গ্রিড হিসাবে অ্যাভোকাডো পাবেন , যেখানে m3 থেকে 6 এর মধ্যে একটি পূর্ণসংখ্যা রয়েছে Each প্রতিটি স্কোয়ারে ঠিক একটি অ্যাভোকাডো থাকে। অ্যাভোকাডোসের রসিকতার বেশ কয়েকটি স্তর রয়েছে:

মঞ্চ 1: অ্যাভোকাডো মোটেও রস হয় নি।
দ্বিতীয় পর্যায়: অ্যাভোকাডো আংশিকভাবে রসালো হয়েছে।
পর্যায় 3: অ্যাভোকাডো সম্পূর্ণ রসালো হয়েছে।
মঞ্চ 4: অ্যাভোকাডো অতিরিক্ত-রস দেওয়ার কারণে বিস্ফোরিত হয়েছে।

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

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

112
221
231

লক্ষ্যটি হ'ল সমস্ত অ্যাভোকাডোকে পুরোপুরি রসযুক্ত করা (অর্থাত্ পর্যায় 3)। এটি অর্জন করতে আপনার নিজের নিকটে তিনটি ভিন্ন ভিন্ন সরস সরঞ্জাম রয়েছে। প্রতিটি জুসিংয়ের সরঞ্জামের আলাদা আলাদা ক্ষেত্র থাকে তবে এগুলি সকলেই আক্রান্ত অ্যাভোকাডোগুলির রস 1 দ্বারা বৃদ্ধি করে।

আপনার নিজের হাতে থাকা সমস্ত সরঞ্জাম এখানে। আপনি সরঞ্জামটির প্রথম অক্ষরটি নির্দিষ্ট করে, তারপরে আপনি যে স্থানাঙ্কগুলি জুস করতে চান তা নির্দিষ্ট করে জুসার ব্যবহার করেন। উদাহরণস্বরূপ, বর্গাকারে স্লিকার ব্যবহার করতে 5,2, আপনি আউটপুট পাবেন S 5,2

স্লাইসার : দু'দিকে লক্ষ্য স্থানাঙ্ক এবং অ্যাভোকাডো জুস করে।

112     112     112
221 --> XXX --> 332
231     231     231

গ্রেটার : জুস লক্ষ্য স্থানাঙ্ক এবং উপরে এবং নীচে অ্যাভোকাডো।

112     1X2     122
221 --> 2X1 --> 231 --> kaboom!
231     2X1     241

রকেট লঞ্চার : লক্ষ্য সমন্বয় এবং সমস্ত সংলগ্ন অ্যাভোকাডোগুলিকে জুস করে।

112     1X2     122
221 --> XXX --> 332
221     2X1     231

নমুনা ইনপুট এবং আউটপুট

323
212
323

G 1,1
S 1,1

3312
3121
1213
2133

R 0,0
R 1,1
R 2,2
R 3,3

22322
22222
22222
33233
33333

G 0,3
G 1,3
G 2,2
G 3,3
G 4,3

222332
333221
222332
333222
222333
333222

S 1,5
S 1,3
S 1,1
S 4,5
S 4,3
S 4,1
G 5,4

আপনি স্পষ্টভাবে এটি বলেছিলেন বলে মনে হয় না, তবে সমাধানটি অবশ্যই খুব কম পদক্ষেপ গ্রহণ করবে?
FryAmTheEggman

1
এটি স্যান্ডবক্স থেকে কিছু গঠনমূলক মন্তব্য উপেক্ষা করেছে। এখানে একটি: আমি মনে করি আপনি ব্যবহারকারীকে তাদের সমন্বয় ব্যবস্থা বাছাই করার জন্য নমনীয়ভাবে মঞ্জুরি দেবেন (উদাহরণস্বরূপ, যেখানে উৎপত্তি, 0-সূচকযুক্ত বা 1-সূচকযুক্ত)।
গ্রেগ মার্টিন

3
@ পাভেল উত্তর বা প্রশ্ন হিসাবে পোস্ট না করার জন্য অনেক ধন্যবাদ
NoOneIsHere

1
আমি এই প্রশ্নটি দেখেছি এবং আমি স্প্যাম হিসাবে ডাউনভিট, ভিটিসি এবং পতাকাঙ্কিত করতে প্রস্তুত। পরিবর্তে, +1।
NoOneIs এখানে 2

1
@ পাভেল আমি এতটাই প্রলুব্ধ হয়েছি যে শিরোনামটি তৈরি করতে ...
অ্যাবিন্থে

উত্তর:


1

গণিত - 350 বাইট

খুব সংক্ষিপ্ত সমাধান নয়, তবে কোনও সমাধানের চেয়েও ভাল, তাই না?

t[x_]:=Flatten@Table[x/@{G,S,R},{i,n},{j,n}];""<>Cases[StringReplace[(First@Solve[(Table[G[i,j]+G[i-1,j]+G[i+1,j]+S[i,j]+S[i,j-1]+S[i,j+1]+R[i,j]+R[i-1,j]+R[i+1,j]+R[i,j-1]+R[i,j+1],{i,n=Length@#},{j,n}]/.(G|S|R)[___,0|n+1,___]->0)==3-#&&And@@t[#[i,j]>=0&],t[#[i,j]&],Integers])/.{(x_->m_):>ToString[m x]},{"["->" ","]"->"\n",", "->","}],Except@"0"]&

আরও পঠনযোগ্য সংস্করণ (অতিরিক্ত স্পেস এবং ইনডেন্ট এবং স্টাফ সহ):

t[x_] := Flatten@Table[x /@ {G, S, R}, {i, n}, {j, n}]; 
"" <> Cases[
   StringReplace[(First@
       Solve[(Table[
             G[i, j] + G[i - 1, j] + G[i + 1, j] + S[i, j] + 
              S[i, j - 1] + S[i, j + 1] + R[i, j] + R[i - 1, j] + 
              R[i + 1, j] + R[i, j - 1] + R[i, j + 1], {i, 
              n = Length@#}, {j, n}] /. (G | S | R)[___, 
              0 | n + 1, ___] -> 0) == 3 - # && 
         And @@ t[#[i, j] >= 0 &], t[#[i, j] &], 
        Integers]) /. {(x_ -> m_) :> ToString[m x]}, {"[" -> " ", 
     "]" -> "\n", ", " -> ","}], Except@"0"] &

ইনপুট একটি অ্যারে (উদাঃ {{3,2,3},{2,2,2},{3,2,3}}), আউটপুট একটি স্ট্রিং (একটি পেছনের নতুন লাইন সহ - এটি যদি গ্রহণযোগ্য না হয় তবে StringDrop[...,-1]অতিরিক্ত 15 বাইটের জন্য ফাংশনটি বন্ধ করুন )। আমি স্থানাঙ্কিত সিস্টেমটি ব্যবহার করেছি যা বলছে (1,1) শীর্ষ-বাম কোণে, (এন, এন) নীচের ডানদিকে (যেখানে এন ম্যাট্রিক্সের মাত্রা)। কখনও কখনও, যদি সমাধানটি একই অপারেশনটিকে একাধিকবার করা প্রয়োজন হয় তবে আউটপুটটিতে 3 G 2,2( যেমন "গ্রাটারটি (২,২) তিনবার ব্যবহার করুন") এর মতো জিনিস অন্তর্ভুক্ত থাকে - যেহেতু আপনি এই ক্ষেত্রে কী করবেন তা বলেননি, আশা করি ঠিক আছে.

ব্যাখ্যা:

  • Table[G[i,j]+G[i-1,j]+G[i+1,j]+S[i,j]+S[i,j-1]+S[i,j+1]+R[i,j]+R[i-1,j]+R[i+1,j]+R[i,j-1]+R[i,j+1],{i,n=Length@#},{j,n}](আই, জে) এবং একইভাবে এস [আই, জে] এবং আর [আই, জে] এর গ্র্যাটার ব্যবহার করে যে প্রতিটি জায়গায় ভ্যারিয়েবল জি [i, j] দিয়ে একটি অ্যারে তৈরি করে। এই ভেরিয়েবলগুলি সেই অবস্থানটিতে সরঞ্জামটি কতবার ব্যবহৃত হয় তা উপস্থাপন করে।
  • .../.(G|S|R)[___,0|n+1,___]->0 অ্যাভোকাডো ক্ষেত্রের বাইরে অবস্থানগুলিতে সরঞ্জামগুলি ব্যবহারের প্রভাবগুলি সরিয়ে দেয়।
  • ...==3-# একে ইনপুট এবং পুরোপুরি রসযুক্ত অ্যাভোকাডোসের ক্ষেত্রের মধ্যে পার্থক্যের সাথে তুলনা করে।
  • ...&&And@@t[#[i,j]>=0&]শর্টহ্যান্ড ব্যবহার করে ভেরিয়েবলগুলি জি [আই, জে], এস [আই, জে], আর [আই, জে] অবশ্যই নেতিবাচক হতে হবে (আপনি অ্যাভোক্যাডোগুলিকে আন-রস করতে পারবেন না!), শর্টহ্যান্ড ব্যবহার করে t[x_]:=Flatten@Table[x/@{G,S,R},{i,n},{j,n}]
  • First@Solve[...,t[#[i,j]&],Integers] G [i, j], S [i, j], R [i, j] এর ক্ষেত্রে আমাদের সমীকরণের প্রথম পূর্ণসংখ্যার সমাধান খুঁজে বের করে।
  • /.{(x_->m_):>ToString[m x]} ভেরিয়েবলগুলি সমান শূন্যের সাথে লুকিয়ে রাখে এবং সমাধানটিকে একটি দুর্দান্ত স্ট্রিং আকারে রাখে।
  • StringReplace[...,{"["->" ","]"->"\n",", "->","}]মত স্ট্রিং সক্রিয় "2 G[1, 4]"স্ট্রিং পছন্দ মধ্যে "2 G 1,4", এবং প্রান্তে একটি newline যোগ করা হয়েছে।
  • ""<>Cases[...,Except@"0"]সমস্ত অবশিষ্টাংশ সরিয়ে "0"দেয় এবং সমস্ত স্ট্রিং একসাথে যোগদান করে।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.