পরিচিতি:
আমরা যখন লেডিবাগগুলি সম্পর্কে চিন্তা করি, আমরা সাধারণত কালো দাগযুক্ত একটি লাল বা গা dark় কমলা রঙের বাগের কথা ভাবি। যদিও এটি প্রয়োজনীয় তা সত্য নয়, যেহেতু লাল / কমলা রঙের দাগযুক্ত লেডিব্যাগগুলি বা দাগ ছাড়াই লেডিব্যাগগুলি রয়েছে , তাই আমরা সাধারণত এশিয়ান লেডিবাগের মতো লেডিব্যাগগুলি চিত্রিত করি:
আরেকটি বিষয় লক্ষণীয় যে লেডিবগগুলির দাগগুলি প্রায়শই প্রতিসম মিশ্রিত। এবং এই যেখানে এই চ্যালেঞ্জ আসে।
চ্যালেঞ্জ:
একটি পূর্ণসংখ্যা দেওয়া n( >= 0) দেওয়া হলে , নিম্নলিখিত ASCII- আর্ট লেডিব্যাগটি এক বা একাধিক বার আউটপুট করুন, প্রতিসামগ্রীযুক্ত দাগগুলি পাশাপাশি উভয় পক্ষের পাশাপাশি দুটি বা আরও বেশি লেডিব্যাগগুলি সমানভাবে বিভক্ত করুন।
এখানে ডিফল্ট লেডিবগ লেআউটটি রয়েছে:
_V_
/(@I@)\
/ | \
| | |
\ | /
''-!-''
যদি n=0, আমরা উপরের লেডিবগকে আউটপুট করি।
যখন nশূন্যের চেয়ে বড় হয়, আমরা হয় ASCII- আর্ট বাগের শূন্যস্থানগুলি একটি ছোট হাতের সাহায্যে পূরণ করি o, বা |কেন্দ্রে একটি মূলধন দিয়ে প্রতিস্থাপন করি O। লক্ষ্যটি হ'ল n'খালি' লেডিবাগ (গুলি) এ পরিবর্তন করা, যখন এখনও একটি প্রতিসাম্য আউটপুট (প্রতি লেডিবগ) উত্পাদন করা হয় এবং যতটা সম্ভব লেডিব্যাগ আউটপুট করা যায়।
এর জন্য বৈধ আউটপুটগুলি হ'ল n=1:
_V_
/(@I@)\
/ O \
| | |
\ | /
''-!-''
_V_
/(@I@)\
/ | \
| O |
\ | /
''-!-''
_V_
/(@I@)\
/ | \
| | |
\ O /
''-!-''
তবে এটি অবৈধ হবে:
_V_
/(@I@)\
/ | \
| o | |
\ | /
''-!-''
এর জন্য বৈধ আউটপুটগুলি হ'ল n=2:
_V_
/(@I@)\
/ O \
| O |
\ | /
''-!-''
_V_
/(@I@)\
/ O \
| | |
\ O /
''-!-''
_V_
/(@I@)\
/ o|o \
| | |
\ | /
''-!-''
_V_
/(@I@)\
/ | \
| o | o |
\ | /
''-!-''
etc. There are a lot of possible outputs.
প্রথমটি nযে কোনও একক লেডিবগের সাথে ফিট করা সম্ভব নয় তা হ'ল n=24। এক্ষেত্রে আপনাকে এটিকে যথাসময়ে সমানভাবে দুটি লেডিবগগুলিতে ভাগ করতে হবে (এগুলি একে অপরের পাশে আউটপুট দিতে হবে কিনা তা বেছে নিতে পারেন বা একে অপরের অধীনে - allyচ্ছিকভাবে একটি স্থান বা তাদের মধ্যে একটি নতুন লাইন)। উদাহরণ স্বরূপ:
_V_ _V_
/(@I@)\ /(@I@)\
/o o|o o\ /o o|o o\
|o o | o o||o o | o o|
\o o|o o/ \o o|o o/
''-!-'' ''-!-''
বা:
_V_
/(@I@)\
/ooo|ooo\
| | |
\ooo|ooo/
''-!-''
_V_
/(@I@)\
/ooo|ooo\
| | |
\ooo|ooo/
''-!-''
চ্যালেঞ্জ বিধি:
nএর সীমার মধ্যে থাকবে0-1000।- আপনি STDOUT এ আউটপুট চয়ন করতে পারেন, স্ট্রিং বা 2D-Char অ্যারে / তালিকা হিসাবে ফিরে আসতে পারেন, ইত্যাদি etc.
- শীর্ষস্থানীয় নতুন লাইনগুলি বা অপ্রয়োজনীয় শ্বেতস্পেসের অনুমতি নেই। ট্রেলিং হোয়াইট স্পেসস এবং একক পেছনের নতুন লাইন অনুমোদিত।
- উপরে উল্লিখিত হিসাবে, যখন দুই বা ততোধিক লেডিব্যাগগুলি প্রয়োজনীয় হয়, আপনি সেগুলি একে অপরের পাশে বা একে অপরের নীচে আউটপুট করা যায় কিনা তা বেছে নিতে পারেন (বা উভয়ের সংমিশ্রণ ..)
- যখন দুটি বা ততোধিক লেডিব্যাগগুলি একে অপরের পাশে মুদ্রণ করা হয় তখন এর মধ্যে একটি একক alচ্ছিক স্থান অনুমোদিত। যখন দুটি বা ততোধিক লেডিব্যাগগুলি একে অপরকে মুদ্রিত করা হয় তখন এর মধ্যে একটি একক alচ্ছিক নতুন-লাইনের অনুমতি দেওয়া হয়।
- সিক্যুয়ড চলাকালীন যেকোন ধাপে আপনি লেডিব্যাগগুলির লেআউট চয়ন করতে পারেন, যতক্ষণ না সেগুলি প্রতিসাম্য এবং ইনপুট সমান হয়
n। - যেহেতু লক্ষ্যটি
nপরিবর্তন এবং যতটা সম্ভব কম কয়েকটি লেডিব্যাগ রয়েছে, আপনি উপরের দিকে একাধিক লেডিবগ ব্যবহার শুরু করবেনn=23। এই লেডিব্যাগগুলির বিন্যাস একই হওয়া দরকার নেই। আসলে, কিছু ইনপুটগুলির পক্ষে, যেমন দুটিn=25বাn=50নাম রাখাও এটি সম্ভব নয় । - তদাতিরিক্ত, কখনও কখনও দুটি বা ততোধিক লেডিবগগুলির মধ্যে বিন্দুগুলি সমানভাবে ভাগ করা সম্ভব হয় না। সেক্ষেত্রে আপনাকে তাদের যথাসময়ে সমানভাবে বিভক্ত করতে হবে, তাদের মধ্যে সর্বাধিক 1 এর পার্থক্য সহ।
সুতরাং n=50, শেষ দুটি নিয়ম মাথায় রেখে, এটি একটি বৈধ সম্ভাব্য আউটপুট হবে (যেখানে প্রথম বাগের 16 টি স্পট রয়েছে এবং অন্য দুটিতে 17 টি রয়েছে):
_V_ _V_ _V_
/(@I@)\ /(@I@)\ /(@I@)\
/oooOooo\ / O \ /o oOo o\
|ooooOoooo||ooooOoooo||o ooOoo o|
\ | / \oooOooo/ \o oOo o/
''-!-'' ''-!-'' ''-!-''
সাধারাইওন রুল:
- এটি কোড-গল্ফ , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার পক্ষে যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন। - স্ট্যান্ডার্ড নিয়মগুলি আপনার উত্তরের জন্য প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং রিটার্ন-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
- ডিফল্ট লুফোলগুলি নিষিদ্ধ।
- যদি সম্ভব হয় তবে আপনার কোডের জন্য একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন।
- এছাড়াও, প্রয়োজনে একটি ব্যাখ্যা যোগ করুন।
oএবং এর Oপরিবর্তে ব্যবহার করেছি। আমি শব্দটি কিছুটা পরিবর্তন করেছি।
n=50উদাহরণস্বরূপ, আমি বিশ্বাস করি আপনি যদি প্রথম বাগ 16 দাগ এবং অন্য দুটি একে 17. আছে হয়েছে মানে



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