কাঁচা ছাঁচ গণনা করতে পারেন!


10

পটভূমি

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

ইনপুট

আপনার ইনপুটগুলি Lআপনার ভাষার স্থানীয় ফর্ম্যাটে 2D পূর্ণসংখ্যার স্থানাঙ্কের একটি তালিকা এবং একটি অব্যক্তিক পূর্ণসংখ্যা হবে N। তালিকাটি Lসদৃশ-মুক্ত হওয়ার নিশ্চয়তা রয়েছে, তবে এটি বাছাই করা যাবে না। ইনপুট N0 এবং দৈর্ঘ্যের মধ্যে Lঅন্তর্ভুক্ত।

তালিকাটি Lখাদ্য উত্সগুলির জন্য স্থানাঙ্কের একটি সেট উপস্থাপন করে। উদাহরণস্বরূপ, তালিকা

[(0,0),(2,-1),(3,1),(0,4),(5,5)]

হিসাবে দর্শনীয়ভাবে ব্যাখ্যা করা যেতে পারে

     o
o


   o
o
  o

আউটপুট

আপনার আউটপুট হ'ল Kইনপুট হিসাবে একই ফর্ম্যাটে 2D পূর্ণসংখ্যার স্থানাঙ্কগুলির অনুলিপি-মুক্ত তালিকা । এটি স্লাইম ছাঁচ দ্বারা গঠিত নেটওয়ার্ককে উপস্থাপন করে এবং এটি নিম্নলিখিত শর্তগুলি পূরণ করবে:

  • এর ছেদটি Lএবং Kআকারটি হুবহু N
  • সেটটি Kপূর্ণসংখ্যার গ্রিডের উপসেট হিসাবে সংযুক্ত থাকে (অরথোগোনাল বা তির্যক সংলগ্ন মাধ্যমে)।
  • যদি কোনও সমন্বয় Kঅপসারণ করা হয়, তবে এটি আর প্রথম দুটি শর্ত পূরণ করে না।

মনে রাখবেন যে যদি N = 0, আউটপুট অবশ্যই একটি খালি তালিকা হতে পারে।

উপরের তালিকার জন্য একটি গ্রহণযোগ্য আউটপুট উদাহরণ Lএবং N = 4হবে

[(0,0),(0,1),(0,2),(0,3),(0,4),(1,4),(2,4),(3,3),(3,2),(3,1),(3,5),(4,5),(5,5)]

যা হিসাবে কল্পনা করা যেতে পারে

   xxO
Oxx
x  x
x  x
x  O
O
  o

যেখানে প্রত্যেকে Oউভয় Lএবং উভয়ের মধ্যে একটি স্থানাঙ্কের প্রতিনিধিত্ব করে Kএবং প্রত্যেকে xঅন্তর্নির্মিত Kতবে অন্তর্ভুক্ত নয় L। অন্যান্য আউটপুটগুলিও গ্রহণযোগ্য এবং "টেন্ড্রিলগুলি" সবচেয়ে কমতম হওয়া উচিত নয়। উদাহরণস্বরূপ, এটি একটি গ্রহণযোগ্য সমাধান:

   xxOxx
Oxx     x
  x    x
 x    x
x  o x
O   x
  Ox 

বিধি

ইনপুট এবং আউটপুট উভয়ই তালিকা হতে হবে, সেট বা অন্যান্য ডেটাটাইপ নয় yp স্থানাঙ্কগুলি তালিকা বা টিপলস হতে পারে। প্রয়োজনে আপনি দুটি ইনপুটের ক্রম পরিবর্তন করতে পারেন।

আপনি একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন লিখতে পারেন। সর্বনিম্ন বাইট গণনা জয়, এবং মান লুফোলগুলি অনুমোদিত নয়।

পরীক্ষার কেস

আপনার প্রোগ্রামের সমস্ত প্রয়োগযোগ্য মানের জন্য এই তালিকাগুলিতে কাজ করা উচিত N

[]
[(2,3)]
[(0,0),(1,0),(0,1),(1,1)]
[(0,0),(2,-1),(3,1),(0,4),(5,5)]
[(0,0),(1,0),(2,0),(3,0),(0,3),(1,3),(2,3),(3,3)]
[(0,0),(1,0),(2,0),(3,0),(0,3),(1,3),(2,3),(3,3),(0,1),(0,2),(3,1),(3,2),(8,1),(8,2),(-5,1),(-5,2)]
[(0,0),(20,0),(15,15),(-10,4),(-10,3),(0,-5),(7,6),(7,7),(8,8),(9,8),(10,-2),(-1,12),(-3,10)]
[(0,0),(1,0),(2,0),(3,0),(5,0),(6,0),(7,0),(0,9),(1,9),(2,9),(3,8),(4,9),(5,10),(6,10),(7,9),(3,3),(4,4),(5,5)]

ভিজ্যুয়ালাইজ:

===
o
===
oo
oo
===
     o
o     


   o  
o     
  o   
===
oooo


oooo
===
     oooo     
o    o  o    o
o    o  o    o
     oooo     
===
                         o     


         o                     

       o                       

                  oo           
                 o             
                 o             

o                              
o                              


          o                   o

                    o          


          o                    
===
     oo 
ooo o  o
   o    


     o  
    o   
   o    


oooo ooo

উত্তর:


3

সিজেম, 77 95 বাইট

আমি মনে করি এটি আরও কিছুটা গল্ফ করা যেতে পারে তবে এখানে যায়:

q~$<_{{:X;]{[X\]z::-~mhW*}$~:Y{_)Y1{_@=X@=}:B~-g-{+__X=!\}:C~1B=!&}g{_(Y0B-g-\C0B=!&}g}*]_&}L?p

ইনপুট মত যায় N <Array of coordinate array>। উদাহরণ স্বরূপ:

4 [[0 0] [1 5] [2 1] [0 3] [5 0] [5 5]]

আউটপুট:

[[0 5] [1 5] [0 4] [0 3] [0 0] [0 2] [0 1] [1 1] [2 1]]

অ্যালগরিদম :

অ্যালগরিদম বেশ সোজা এগিয়ে এবং এর মত চলে:

  • ইনপুট স্থানাঙ্ক অ্যারে বাছাই করুন। এটি স্থানাঙ্কগুলি প্রথম সারিতে এবং তারপরে কলাম অনুসারে বাছাই করে।
  • এখন আমরা প্রথম Nপয়েন্ট বাছাই
  • এখন আমরা এই Nপয়েন্টগুলি হ্রাস করি । গন্তব্যটি সর্বশেষ পয়েন্ট এবং উত্সটি সেই শেষ পয়েন্টটির ক্লোজ পয়েন্ট।
  • তারপরে আমরা উপরের-বাম সর্বাধিক পয়েন্ট দিয়ে শুরু করব, ডান দিকের (অথবা বাম) তার পয়েন্ট অবধি সরাসরি বা পরবর্তী পয়েন্টের উপরে চলে আসি।
  • তারপরে আমরা পরবর্তী পয়েন্টে পৌঁছতে নীচে হাঁটছি।
  • এটি গ্যারান্টিযুক্ত যে একই সারিতে উপরের বিন্দুতে কোনও আবৃত পয়েন্ট থাকবে না। এটি নিশ্চিত করে যে আমরা নির্বাচিত অন্য কোনও বিন্দুকে স্পর্শ না করি N। ক্লোজ পয়েন্ট নির্বাচন করাও নিশ্চিত করে যে দ্বিতীয় নিয়মটি সত্যই আছে।

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

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