ট্র্যাক
/
Lean
Lean
/
অনুশীলনী
/
রেজিস্টর কালার ডুও
রেজিস্টর কালার ডুও

রেজিস্টর কালার ডুও

মধ্যম

নির্দেশনা

আপনি যদি 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

উপরের উদাহরণ থেকে: brown-green থেকে 15 রিটার্ন করা উচিত, এবং brown-green-violet থেকেও 15 রিটার্ন করা উচিত, তৃতীয় রংটি উপেক্ষা করে।

সিনট্যাক্স ডিফাইন করা

Caution

এই অনুশীলনীটি Resistor Color অনুশীলনীর ধারাবাহিকতা হিসেবে তৈরি এবং তার ওপর ভিত্তি করেই সাজানো। আপনি প্র্যাকটিস অনুশীলনীগুলো যেকোনো ক্রমেই সমাধান করতে পারেন, তবুও আমরা প্রস্তাবিত ক্রমটি অনুসরণ করার পরামর্শ দিই।

এই অনুশীলনীতে রঙের জন্য c* প্রিফিক্স দিয়ে আগে থেকেই ডিফাইন করা সিনট্যাক্স দেওয়া আছে, যেমন c*black. এরপর নির্দেশনা অনুযায়ী আপনাকে এমন সিনট্যাক্স ডিফাইন করতে হবে, যা রঙের একটি ক্রমকে একটি সংখ্যার সাথে সম্পর্কযুক্ত করে। রংগুলো *[[ এবং ]]-এর মধ্যে থাকে এবং , দিয়ে আলাদা করা হয়, যেমন *[[c*black, c*yellow, c*violet]].

এই কাজটির জন্য সম্ভবত আপনাকে নোটেশন কিংবা ম্যাক্রো ব্যবহার করতে হবে। সংশ্লিষ্ট একটি রেফারেন্স দেখে নিতে পারেন।

যেহেতু নতুন সিনট্যাক্স কম্পাইল টাইমেই এক্সপ্যান্ড হয়, তাই প্রয়োজনীয় সব সিনট্যাক্স ডিফাইন করা না থাকলে যেকোনো টেস্ট কম্পাইল হতে ব্যর্থ হবে। এই কারণেই প্রচলিত রানটাইম টেস্টের ওপর নির্ভর না করে আমরা #guard_msgs ব্যবহার করি। এই কমান্ডটি একটি নির্দিষ্ট ডকস্ট্রিংয়ের সাথে আরেকটি কমান্ড, এক্ষেত্রে #eval, যে মেসেজ তৈরি করে তার তুলনা করে এবং দুটি আলাদা হলে একটি এরর রিপোর্ট করে। এরর না থাকাকেই আপনি পাস হওয়া টেস্ট হিসেবে বিবেচনা করতে পারেন।

আপনি যদি নিজের কম্পিউটারে বা Lean-এর অনলাইন প্লেগ্রাউন্ড-এ কাজ করেন, তাহলে #guard_msgs যে এরর রিপোর্ট করে, তার তাৎক্ষণিক ফিডব্যাক আপনি Lean InfoView-তে দেখতে পাবেন।

Caution

অনলাইন টেস্ট রানার বর্তমানে পুরো Lean মেটা-প্রোগ্রামিং লাইব্রেরি ইমপোর্ট করা সাপোর্ট করে না। ডিফল্টভাবে Lean-এ যেসব ফিচার পাওয়া যায়, Lean নেমস্পেসের ভেতরের ফিচারগুলোসহ, সেগুলো আপনি স্বাধীনভাবে ব্যবহার করতে পারেন। তবে import Lean যোগ করলে বা Lean নেমস্পেস থেকে নির্দিষ্ট কোনো মডিউল ইমপোর্ট করলে Exercism-এ সাবমিট করার সময় আপনার সাবমিশন ব্যর্থ হবে।

মনে রাখবেন, এই অনুশীলনীটি সমাধান করতে Lean লাইব্রেরি ইমপোর্ট করা প্রয়োজন নেই।

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

রেজিস্টর কালার ডুও শুরু করতে প্রস্তুত?

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