ট্র্যাক
/
Emacs Lisp
Emacs Lisp
/
অনুশীলনী
/
টুকরো জোড়া লাগানো
টুকরো জোড়া লাগানো

টুকরো জোড়া লাগানো

কঠিন

ভূমিকা

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

নির্দেশনা

একটি জিগস পাজল সম্পর্কে আংশিক তথ্য দেওয়া থাকলে, অনুপস্থিত টুকরাগুলো যোগ করুন।

তথ্যটি বিস্তারিত সম্পূর্ণ করার জন্য যথেষ্ট না হলে, অথবা দেওয়া অংশগুলো পরস্পরবিরোধী হলে, ব্যবহারকারীকে জানানো উচিত।

জিগস পাজল সম্পর্কে সম্পূর্ণ তথ্যে নিচের অংশগুলো থাকে:

  • pieces: মোট টুকরার সংখ্যা
  • border: বর্ডার টুকরার সংখ্যা
  • inside: ভেতরের (বর্ডার নয় এমন) টুকরার সংখ্যা
  • rows: সারির সংখ্যা
  • columns: কলামের সংখ্যা
  • aspectRatio: সারির তুলনায় কলামের অ্যাসপেক্ট রেশিও
  • format: পাজলের ফরম্যাট, যা portrait, square, বা landscape হতে পারে

এই অনুশীলনীর জন্য আপনি ধরে নিতে পারেন যে টুকরাগুলো বর্গাকার, ফলে ফরম্যাটটি অ্যাসপেক্ট রেশিও থেকে বের করা যায়:

  • অ্যাসপেক্ট রেশিও ১-এর কম হলে, সেটি portrait.
  • ১-এর সমান হলে, সেটি square.
  • ১-এর বেশি হলে, সেটি landscape.

তিনটি উদাহরণ

Portrait

৬টি টুকরার একটি portrait জিগস পাজল, যার সবগুলোই বর্ডার টুকরা এবং একটিও ভেতরের টুকরা নয়। এর ২টি কলাম ও ৩টি সারি আছে। অ্যাসপেক্ট রেশিও 0.666666... (2/3)।

একটি ২ বাই ৩ জিগস পাজল

Square

৯টি টুকরার একটি square জিগস পাজল, যার কেন্দ্রের টুকরাটি ছাড়া বাকি সবগুলোই বর্ডার টুকরা, আর ওই কেন্দ্রের টুকরাটি ভেতরের টুকরা। এর ৩টি কলাম ও ৩টি সারি আছে। অ্যাসপেক্ট রেশিও 1.0 (3/3)।

একটি ৩ বাই ৩ জিগস পাজল

Landscape

১২টি টুকরার একটি landscape জিগস পাজল, যার ১০টি বর্ডার টুকরা এবং ২টি ভেতরের টুকরা। এর ৪টি কলাম ও ৩টি সারি আছে। অ্যাসপেক্ট রেশিও 1.333333... (4/3)।

একটি ৪ বাই ৩ জিগস পাজল

বাস্তবায়ন

প্রদত্ত তথ্য যদি একটি নির্দিষ্ট ধাঁধা নির্ণয় করার জন্য যথেষ্ট না হয়, তাহলে "Insufficient data" বার্তা দিয়ে একটি এরর সংকেত দিন।

প্রদত্ত তথ্য যদি পরস্পরবিরোধী হয়, তাহলে "Contradictory data" বার্তা দিয়ে একটি এরর সংকেত দিন।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Emacs Lisp Exercism

টুকরো জোড়া লাগানো শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Emacs Lisp ট্র্যাকের 103টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।