আপনি যদি Raspberry Pi দিয়ে কিছু বানাতে চান, তাহলে সম্ভবত রেজিস্টর ব্যবহার করবেন। এই অনুশীলনীর জন্য এদের সম্পর্কে আপনাকে মাত্র তিনটি বিষয় জানতে হবে:
প্রতিটি রেজিস্টরের একটি রেজিস্ট্যান্স মান থাকে।
রেজিস্টর ছোট হয়, আসলে এতটাই ছোট যে সেগুলোর গায়ে রেজিস্ট্যান্স মানটি ছাপলে পড়া কঠিন হয়ে যেত। এই সমস্যা এড়াতে নির্মাতারা রেজিস্টরের গায়ে রঙ দিয়ে কোড করা ব্যান্ড ছাপেন, যাতে সেগুলোর রেজিস্ট্যান্স মান বোঝা যায়।
প্রতিটি ব্যান্ড একটি সংখ্যার একটি অঙ্ক হিসেবে কাজ করে। যেমন, তারা যদি একটি brown ব্যান্ড (মান 1) তারপর একটি green ব্যান্ড (মান 5) ছাপত, তাহলে সেটি 15 সংখ্যাটি বোঝাত। এই অনুশীলনীতে আপনি একটি সহায়ক প্রোগ্রাম তৈরি করবেন, যাতে ব্যান্ডগুলোর মান আপনাকে মনে রাখতে না হয়। প্রোগ্রামটি ইনপুট হিসেবে ৩টি রঙ নেবে এবং সঠিক মানটি ওহমে আউটপুট দেবে। রঙের ব্যান্ডগুলো এভাবে এনকোড করা হয়েছে:
black: 0
brown: 1
red: 2
orange: 3
yellow: 4
green: 5
blue: 6
violet: 7
grey: 8
white: 9
রেজিস্টর কালার ডুও-তে আপনি প্রথম দুটি রঙ ডিকোড করেছিলেন।
যেমন: orange-orange-এর মূল মান হলো 33।
তৃতীয় রঙটি বোঝায় মূল মানের সাথে কতটি শূন্য যোগ করতে হবে।
মূল মানের সাথে শূন্যগুলো যোগ করলে ওহমে একটি মান পাওয়া যায়।
এই অনুশীলনীর জন্য ওহম আসলে কী, তা গুরুত্বপূর্ণ নয়।
যেমন:
(আপনার যদি গণিত পছন্দের বিষয় হয়, তাহলে শূন্যগুলোকে 10-এর সূচক হিসেবে ভাবতে পারেন। গণিত পছন্দ না হলে শূন্যগুলো নিয়েই এগিয়ে যান। আসলে বিষয়টা একই, শুধু গণিতের পরিভাষার বদলে সহজ ভাষায় বলা।)
এই অনুশীলনীটি রঙগুলোকে একটি লেবেলে রূপান্তর করার বিষয়ে:
"... ohms"
তাই "orange", "orange", "black" ইনপুট দিলে রিটার্ন করা উচিত:
"33 ohms"
বড় রেজিস্টরের ক্ষেত্রে ওহমের বড় মাত্রা বোঝাতে একটি মেট্রিক প্রিফিক্স ব্যবহার করা হয়, যেমন "kiloohms"। এটা অনেকটা "2000 মিটার"-এর বদলে "2 কিলোমিটার", বা "2000 গ্রাম"-এর জন্য "2 কিলোগ্রাম" বলার মতো।
যেমন, "orange", "orange", "orange" ইনপুট দিলে রিটার্ন করা উচিত:
"33 kiloohms"
এই অনুশীলনীটি Resistor Color Duo-এর পরের অংশ এবং সেটির ওপর ভিত্তি করেই তৈরি।
যদিও আপনি প্র্যাকটিস অনুশীলনীগুলো যেকোনো ক্রমে সমাধান করতে পারেন, তবুও আমরা প্রস্তাবিত ক্রমটি অনুসরণ করার পরামর্শ দিই।
এই অনুশীলনীতে c* প্রিফিক্স দিয়ে আগে থেকেই ডিফাইন করা রঙের সিনট্যাক্স আপনাকে দেওয়া হয়েছে, যেমন c*black।
এরপর নির্দেশনা অনুযায়ী আপনাকে এমন সিনট্যাক্স ডিফাইন করতে হবে, যা রঙের একটি ক্রমকে তার SI ইউনিটসহ, সম্ভবত একটি মেট্রিক প্রিফিক্সসহ, একটি রেজিস্ট্যান্স মানের সাথে সম্পর্কিত করে।
রঙগুলো থাকে *[[ ও ]] এর ভেতরে এবং , দিয়ে আলাদা করা হয়, যেমন *[[c*black, c*yellow, c*violet]]।
এই কাজটি করতে সম্ভবত আপনাকে নোটেশন বা ম্যাক্রো ব্যবহার করতে হবে। আপনি একটি রেফারেন্স দেখে নিতে পারেন।
যেহেতু নতুন সিনট্যাক্স কম্পাইল টাইমে এক্সপ্যান্ড হয়, তাই প্রয়োজনীয় সব সিনট্যাক্স ডিফাইন করা না থাকলে কোনো টেস্টই কম্পাইল হবে না।
এই কারণে প্রচলিত রানটাইম টেস্টের ওপর নির্ভর না করে আমরা #guard_msgs ব্যবহার করি।
এই কমান্ডটি একটি নির্দিষ্ট ডকস্ট্রিংয়ের সাথে অন্য একটি কমান্ড থেকে তৈরি হওয়া মেসেজ, এখানে #eval, তুলনা করে এবং দুটি আলাদা হলে একটি এরর রিপোর্ট করে।
এরর না থাকাকেই আপনি পাস হওয়া টেস্ট হিসেবে ধরতে পারেন।
আপনি যদি লোকালি বা Lean-এর অনলাইন প্লেগ্রাউন্ড-এ কাজ করেন, তাহলে #guard_msgs যে কোনো এরর রিপোর্ট করলে Lean InfoView-এর মাধ্যমে সাথে সাথে ফিডব্যাক পাবেন।
রেজিস্ট্যান্স মানটি Ω (ওহম) ইউনিট ব্যবহার করে আউটপুট দিতে হবে।
এই ইউনিকোড ক্যারেক্টারটি লোকালি বা Lean-এর অনলাইন প্লেগ্রাউন্ডে \ohm শর্টকাট দিয়ে তৈরি করা যায়।
আপনি যদি Exercism-এর অনলাইন এডিটরে কাজ করেন, তাহলে নির্দেশনা থেকে ক্যারেক্টারটি নিশ্চিন্তে কপি করে নিতে পারেন।
অনলাইন টেস্ট রানার বর্তমানে সম্পূর্ণ Lean মেটা-প্রোগ্রামিং লাইব্রেরি ইমপোর্ট করা সমর্থন করে না।
Lean-এ ডিফল্টভাবে পাওয়া যেকোনো ফিচার, Lean নেমস্পেসের ভেতরেরগুলোসহ, আপনি স্বাধীনভাবে ব্যবহার করতে পারেন; তবে import Lean যোগ করলে বা Lean নেমস্পেস থেকে নির্দিষ্ট মডিউল ইমপোর্ট করলে Exercism-এ জমা দেওয়ার সময় আপনার সাবমিশন ব্যর্থ হবে।
মনে রাখবেন, এই অনুশীলনীটি সমাধান করতে Lean লাইব্রেরি ইমপোর্ট করা প্রয়োজন নেই।
Exercism-এ সাইন আপ করুন, Lean ট্র্যাকের 100টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।