অ্যাডভেন্ট চ্যালেঞ্জ 4: বর্তমান বিধানসভা লাইন!


12

<< পূর্ববর্তী পরবর্তী >>

এলভেস রাতারাতি চুরি করেছিল এমন সমস্ত উপহার পুনরায় তৈরি করতে সক্ষম হয়েছিল সান্টা! এখন সেগুলি প্যাকেজিংয়ের জন্য তাদেরকে সমাবেশ লাইনে প্রেরণ করতে হবে। এলভেস্টরা ভাল কাজ করছে কিনা তা নিশ্চিত করার জন্য এবং অ্যা্যাসেম্বলি লাইনের ছবিগুলি বিজ্ঞাপনের পোস্টারে সুন্দর দেখাচ্ছে বলে তার উভয়ই অ্যাসেমব্লি লাইনের তদারকি করার জন্য একটি ক্যামেরা থাকে [উদ্ধৃতি-আবশ্যক]

দুর্ভাগ্যক্রমে, তার ক্যামেরাটি ভেঙে গেছে, সুতরাং তিনি চান যে আপনি অ্যাসেমব্লি লাইনের দেখতে কেমন হবে তার একটি সিমুলেশন আঁকুন!

সর্বাধিক দক্ষতার সাথে অ্যাসেমব্লি লাইনে কাজ করার জন্য এবং ত্রুটি বা ব্যর্থতার ঝুঁকি হ্রাস করার জন্য, সমস্ত উপস্থিত বাক্সগুলির একই প্রস্থ রয়েছে যাতে তারা পরিবাহী বেল্টে পুরোপুরি ফিট করে।

চ্যালেঞ্জ

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

একটি বর্তমান যেমন আঁকা:

  +----+
 /    /|
+----+ |
|    | +
|    |/
+----+

এই বর্তমান প্রস্থ 1, উচ্চতা 2, এবং দৈর্ঘ্য 4 আছে। নোট করুন যে প্লাস-চিহ্নগুলি পার্শ্ব-দৈর্ঘ্যের জন্য গণনা করে না, সুতরাং দৈর্ঘ্য 4 সহ একটি বর্তমান প্রকৃতপক্ষে 6 টি অবস্থানকে স্প্যান করে।

সমস্ত উপহার একে অপরের পাশে আঁকা হয় নিকটতম দুটি অক্ষরের মধ্যে একটি স্থান দিয়ে; অর্থাত, উপহারগুলির নীচে-বাম কোণগুলি এমনভাবে ফাঁকা আছে যে কোনও বর্তমান বাক্সটির দৈর্ঘ্য lএবং প্রস্থ থাকলে wপরবর্তী উপস্থিত বাক্সের নীচে-বাম কোণটি l + w + 4পূর্ববর্তী বাক্সের নীচে বাম কোণার ঠিক অবস্থান থাকবে ।

সমস্ত উপস্থিত বাক্সগুলি আঁকার পরে, শেষের width + 2লাইনের প্রতিটি বাক্সের মধ্যে স্থানকে আন্ডারস্কোর দিয়ে প্রতিস্থাপন করে কনভেয়র বেল্ট আঁকা হয় ।

সঙ্গে উপস্থিত বক্স চূড়ান্ত আউটপুট (l, w, h)এর [(4, 1, 2), (8, 1, 3), (1, 1, 1)]হতে হবে:

           +--------+
  +----+  /        /|
 /    /| +--------+ |   +-+
+----+ | |        | |  / /|
|    | +_|        | +_+-+ +
|    |/__|        |/__| |/
+----+___+--------+___+-+

ফর্ম্যাটিং স্পেসিফিকেশন

আপনি 3-টি টিপলগুলির একটি তালিকা নিতে বেছে নিতে পারেন যেখানে উপাদানগুলির মধ্যে একটি সম্পূর্ণ তালিকাতে সামঞ্জস্যপূর্ণ হয় (এটি প্রস্থ হবে), বা আপনি বর্তমান প্রস্থটি নিতে পারেন এবং তারপরে দৈর্ঘ্যের প্রতিনিধিত্বকারী 2-টিপলগুলির একটি তালিকা রাখতে পারেন এবং প্রতিটি উপস্থিতি উচ্চতা। আপনি ইনপুটগুলি কোনও ক্রমে এবং কোনও যুক্তিসঙ্গত বিন্যাসে নিতে পারেন, তবে উপহারগুলি অবশ্যই একই ক্রমে প্রদর্শিত হবে যা সেগুলি ইনপুট হিসাবে দেওয়া হয়।

আপনি ASCII- আর্টের জন্য যেকোন যুক্তিসঙ্গত আউটপুট ফর্ম্যাট চয়ন করতে পারেন (কোনও ফাংশন থেকে প্রত্যাবর্তন সহ)।

পরীক্ষার কেস

এই পরীক্ষার কেসগুলি [(l, w, h), ...]ফরম্যাট হিসাবে দেওয়া হয় ।

[(4, 1, 2), (8, 1, 3), (1, 1, 1)]:

           +--------+
  +----+  /        /|
 /    /| +--------+ |   +-+
+----+ | |        | |  / /|
|    | +_|        | +_+-+ +
|    |/__|        |/__| |/
+----+___+--------+___+-+

[(5, 3, 4), (8, 3, 1), (1, 3, 7)]:

                               +-+
                              / /|
                             / / |
    +-----+                 / /  |
   /     /|                +-+   |
  /     / |                | |   |
 /     /  |     +--------+ | |   |
+-----+   |    /        /| | |   |
|     |   +___/        / +_| |   +
|     |  /___/        / /__| |  /
|     | /___+--------+ /___| | /
|     |/____|        |/____| |/
+-----+_____+--------+_____+-+

[(0, 0, 0)] (this is the most interesting test case ever :P)

 ++
+++
++

[(8, 3, 0), (0, 3, 8)] (more zero cases)

                   ++
                  //|
                 // |
                //  |
               ++   |
               ||   |
               ||   |
               ||   |
    +--------+ ||   |
   /        /+_||   +
  /        //__||  /
 /        //___|| /
+--------+/____||/
+--------+_____++

বিধি

  • স্ট্যান্ডার্ড লুফোলস প্রয়োগ করুন
  • এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর ins
  • কোন উত্তর গৃহীত হবে না

দ্রষ্টব্য: আমি অ্যাডভেন্ট অফ কোড থেকে এই চ্যালেঞ্জ সিরিজের জন্য অনুপ্রেরণা তৈরি করেছি । এই সাইটের সাথে আমার কোনও সম্পর্ক নেই

আপনি এখানে প্রথম চ্যালেঞ্জের 'লিঙ্কযুক্ত' বিভাগটি দেখে সিরিজের সমস্ত চ্যালেঞ্জের একটি তালিকা দেখতে পারেন ।


@ অ্যাডমবর্কবার্কের উপস্থিত সমস্ত বাক্সের সমান প্রস্থ রয়েছে
এরিক দ্য আউটগল্ফার

1
যদি কাঠকয়লা এটি ধ্বংস না করে তবে আমি জানি না কী হবে।
সম্পূর্ণমানবিক

@ টোটালিহুমান আসলে, মস্তিষ্কের ** কে এই চ্যালেঞ্জটি জিতবে: পি
হাইপার নিউট্রিনো

আপনি কি এই সমস্ত প্রশ্নের সূচকে মেটাতে একটি পোস্ট করতে পারেন?
রামনেন শেফ

@ র্যামেন শেফ এইচএম ভাল ধারণা। আমি এটি করতে পারি: পি
হাইপারনিউট্রিনো

উত্তর:


4

কাঠকয়লা , 96 81 বাইট

NθWS«→FυG↗→↙⁺²θ_≔I⪪ι υ≔⊟υπ≔§υ⁰ρ→↗G↑⊕π↗⊕θ→⊕ρ↓⊕π↙⊕θ ↑πP↗⊕θP←⊕ρ↓+↓πF²«↷⁴+ρ↷²+π↷¹+θ↶³

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ইনপুটটি প্রথম লাইনের প্রস্থ, তারপরে নিম্নলিখিত লাইনের অন্যান্য মাত্রা, একটি ফাঁকা রেখা দিয়ে শেষ হয়। ব্যাখ্যা:

Nθ

প্রস্থ ইনপুট।

WS«

ফাঁকা রেখাটি না পৌঁছানো পর্যন্ত অবশিষ্ট রেখাগুলি লুপ করুন।

→FυG↗→↙⁺²θ_

উপহারের মধ্যে বেল্ট আঁকুন। uপরিবর্তনশীল, একটি খালি তালিকা, এবং একারণে প্রথম পাস উপর কিছুই না করার জন্য পূর্বনির্ধারিত পরে যখন এটি একটি একক উপাদান সঙ্গে শেষ পর্যন্ত, একবার চালানোর জন্য এই কোড ঘটাচ্ছে। (একটি ব্যবহার ifকম গোলাপী হবে।)

≔I⪪ι υ

স্থানটিতে মাত্রাগুলি বিভক্ত করুন, তাদের পূর্ণসংখ্যার জন্য কাস্ট করুন এবং সেভ করুন u

≔⊟υπ

শেষ মাত্রা সরান এবং এটি সংরক্ষণ করুন p

≔§υ⁰ρ

এতে প্রথম মাত্রাটি অনুলিপি করুন rতবে এটিতে রেখে দিনu যাতে বেল্টটি পরবর্তী লুপটিতে আঁকতে পারে।

→↗G↑⊕π↗⊕θ→⊕ρ↓⊕π↙⊕θ 

বেল্টটির ওভারল্যাপ হয়ে গেলে, বর্তমানের অভ্যন্তরটি মুছুন।

↑πP↗⊕θP←⊕ρ↓+↓π

বর্তমানের অভ্যন্তরীণ রেখাগুলি আঁকুন।

F²«↷⁴+ρ↷²+π↷¹+θ↶³

বর্তমানের বাইরের অংশের অর্ধেক পথ আঁকুন, তারপরে অন্য অর্ধের জন্য পুনরাবৃত্তি করুন।


1

পিপ , 160 154 বাইট

153 কোড বাইট, -lপতাকা জন্য +1 ।

{YMX:_+B+3MUaRV$.({UwhlWg+^11{a<=h+w?J[sXa-haN[0hh+w]?'-XlWR'+sXlWR("/|"a<h)RV(("+|/"aCMw).sXw)@<MN[ah+w-awh]'_Xw-a+1|s]sXl+w+3}M,y}MUa)R`_ +`'_X#_<|:'_}

এই ফাংশন যা ধারণকারী তালিকার একটি তালিকা লাগে [width height length]এটি অনলাইন চেষ্টা করুন!

কিভাবে?

শীর্ষ স্তরের ব্যাখ্যা:

  • এমন একটি ফাংশন সংজ্ঞায়িত করুন যা একটি বাক্সের প্রতিনিধিত্বকারী লাইনের একটি তালিকা ফেরত দেয়
  • প্রদত্ত মাত্রাগুলির প্রতিটি তালিকায় ফাংশনটি মানচিত্র করুন
  • আইটেম-ভিত্তিক লাইনগুলির ফলাফলগুলির তালিকা তৈরি করুন
  • আন্ডারস্কোরগুলি সঠিকভাবে আচরণ করতে পেতে রেজেক্স প্রতিস্থাপনের সাথে একটি সামান্য পোস্ট প্রসেসিং করুন

একটি মন্তব্য ছেড়ে আমি আরও বিস্তারিত ব্যাখ্যা যুক্ত করব।


0

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

def f(B):
 d=B[0][1]+2;H=max(B)[0]+d+1;W=sum(sum(b[1:])+3for b in B)+len(B);r=[[' ']*i+W*['_']for i in range(d)]+[W*[' ']for _ in' '*H];o=0
 for h,w,l in B:
	for i in range(w+2,1,-1):r[i-1][o+i-2:o+l+i]=[' ']*(l+2)+['/'];r[h+i][o+i-1]=r[h+i][o+l+i]='/'
	r[0][o:o+l+2]=r[h+1][o:o+l+2]=r[w+h+2][o+w+1:o+w+l+3]=['+']+['-']*l+['+']
	for i in range(1,h+1):m=min(i,w)-1;r[i][o:o+l+2+m]=['|']+[' ']*l+['|']+[' ']*m;r[i+w+1][o+l+w+2]='|'
	r[w+1][o+l+w+2]='+';o+=l+w+4
 for l in r[H-1::-1]:print''.join(l).rstrip('_')

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

এর তালিকাগুলির একটি তালিকা নেয় [height, width, length]

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