আপনি একবার hello-world অনুশীলনীটি ইমপ্লিমেন্ট করে ফেললে, এরপরের কাজ হলো আরও ২০+ অনুশীলনী ইমপ্লিমেন্ট করা।
আপনি দুই ধরনের অনুশীলনী ইমপ্লিমেন্ট করতে পারেন:
সাধারণভাবে, নতুন ট্র্যাকের জন্য আমরা প্রথমে প্র্যাকটিস অনুশীলনী ইমপ্লিমেন্ট করে শুরু করার পরামর্শ দিই, কারণ এগুলো ইমপ্লিমেন্ট করা সহজ এবং শুরুতে বেশি ভাবতে হয় না। কনসেপ্ট অনুশীলনী সবসময়ই পরে যোগ করা যায়, আপনার ট্র্যাক একবার ঠিকঠাকভাবে চালু হয়ে গেলে।
ট্র্যাকগুলোকে প্র্যাকটিস অনুশীলনী ইমপ্লিমেন্ট করতে সাহায্য করার জন্য আমরা exercism/problem-specifications রিপোজিটরি তৈরি করেছি। এই রিপোজিটরিতে ১০০+ প্র্যাকটিস অনুশীলনীর মেটাডেটা আছে, যা থেকে ভিন্ন ভিন্ন ট্র্যাক এই অনুশীলনীগুলোর নিজস্ব ট্র্যাক-নির্দিষ্ট সংস্করণ ইমপ্লিমেন্ট করতে পারে। এই কারণেই আপনি অনেক ভিন্ন ট্র্যাক জুড়ে একই অনুশীলনী ইমপ্লিমেন্ট করা দেখতে পাবেন।
তাহলে ১০০+ অনুশীলনীর এই তালিকা থেকে ২০+ বেছে নেবেন কীভাবে? এখানে কিছু নির্দেশিকা রইল।
১০০+ অনুশীলনীতে ব্যবহৃত কনসেপ্টে অনেক বৈচিত্র্য আছে। আপনার লক্ষ্য হওয়া উচিত এমন অনুশীলনী ইমপ্লিমেন্ট করা, যেগুলোতে শিক্ষার্থীরা বিস্তৃত বৈচিত্র্যের কনসেপ্ট চর্চা করে। তাই স্ট্রিং নিয়ে তৈরি ২০টি অনুশীলনী ইমপ্লিমেন্ট করার বদলে, ভিন্ন ভিন্ন কনসেপ্ট নিয়ে তৈরি অনুশীলনী ইমপ্লিমেন্ট করার চেষ্টা করুন।
নমুনা অনুশীলনী-সহ কয়েকটি কনসেপ্ট:
| কনসেপ্ট | অনুশীলনী |
|---|---|
| বিট ম্যানিপুলেশন | allergies, secret-handshake |
| বুলিয়ান | leap |
| ক্লাস | circular-buffer, robot-name |
| কনকারেন্সি | bank-account |
| কন্ডিশনাল | raindrops |
| তারিখ ও সময় | gigasecond, meetup |
| সমতা | clock |
| ফ্লোটিং-পয়েন্ট সংখ্যা | darts, space-age |
| লেজিনেস | alphametics, zebra-puzzle |
| অ্যারে | resistor-color, spiral-matrix |
| লুপ | collatz-conjecture, protein-translation |
| ম্যাপ | nucleotide-count |
| সংখ্যা | leap, grains |
| র্যান্ডমনেস | dnd-character, robot-name |
| স্ট্রিং | bob, isogram, |
| ট্রি | binary-search-tree, pov |
কিছু অনুশীলনী ইমপ্লিমেন্ট করা অন্যগুলোর চেয়ে কঠিন হবে। আপনার লক্ষ্য হওয়া উচিত ভিন্ন ভিন্ন কঠিনতার অনুশীলনী ইমপ্লিমেন্ট করা: কিছু সহজ, কিছু মাঝারি আর কিছু কঠিন।
একটি অনুশীলনী কতটা কঠিন, তা নির্ভর করে কয়েকটি বিষয়ের উপর, যেমন এর সাথে জড়িত কনসেপ্ট এবং ট্র্যাকের ভাষা। অনুশীলনীটি যে অন্য ট্র্যাকগুলোতে ইমপ্লিমেন্ট করা হয়েছে, সেখানে এটি কেমন দেখতে, তা দেখে নিলে ইমপ্লিমেন্টেশনটি কেমন হতে পারে সে সম্পর্কে ভালো ধারণা পাবেন।
এখানে কিছু কঠিনতা-স্তর ও তাদের অনুশীলনী:
| কঠিনতা | অনুশীলনী |
|---|---|
| সহজ | darts, gigasecond, isogram, leap, resistor-color, space-age |
| মাঝারি | allergies, bob, meetup, protein-translation, raindrops, secret-handshake |
| কঠিন | alphametics, forth, react, pov, zebra-puzzle, zipper |
সব অনুশীলনী আপনার ট্র্যাকের সাথে নাও মানতে পারে। আপনার কেবল সেগুলোই বাছাই করা উচিত, যেগুলো আপনার ট্র্যাকের সাথে মানায়; যে অনুশীলনী অর্থহীন, তা ইমপ্লিমেন্ট করার চেয়ে না ইমপ্লিমেন্ট করা ভালো। উদাহরণ হিসেবে, lens-person অনুশীলনীতে শিক্ষার্থীকে লেন্স নিয়ে কাজ করতে হয়, যা অনেক ভাষা সাপোর্ট করে না।
যদি এমন কোনো অনুশীলনী পান যা আপনার ট্র্যাকের সাথে মানায় না, তাহলে আপনি তার slug ট্র্যাকের config.json ফাইল-এর exercises.foregone অ্যারেতে যোগ করতে পারেন।
এতে টুলিং ওই অনুশীলনীটি উপেক্ষা করবে।
এসব একটু বাস্তব করে বোঝাতে, প্রাথমিক অনুশীলনীর একটি নমুনা বাছাই কেমন দেখাতে পারে, তা এখানে:
| অনুশীলনী | কঠিনতা | কনসেপ্ট |
|---|---|---|
| hello-world | সহজ | কোনোটিই না (প্রাথমিক অনুশীলনী) |
| leap | সহজ | সংখ্যা, বুলিয়ান |
| gigasecond | সহজ | তারিখ ও সময় |
| isogram | সহজ | স্ট্রিং |
| resistor-color | সহজ | অ্যারে |
| nucleotide-count | সহজ | ম্যাপ |
| collatz-conjecture | সহজ | লুপ |
| darts | সহজ | ফ্লোটিং-পয়েন্ট সংখ্যা |
| two-fer | সহজ | স্ট্রিং ফরম্যাটিং, ঐচ্ছিক আর্গুমেন্ট |
| high-scores | সহজ | কালেকশন প্রসেসিং |
| raindrops | মাঝারি | কন্ডিশনাল |
| bob | মাঝারি | স্ট্রিং |
| allergies | মাঝারি | বিট ম্যানিপুলেশন |
| series | মাঝারি | এক্সেপশন |
| circular-buffer | মাঝারি | ক্লাস |
| meetup | মাঝারি | তারিখ ও সময় |
| yacht | মাঝারি | অ্যারে |
| dominoes | কঠিন | টাপল, লেজিনেস |
| diamond | কঠিন | স্ট্রিং ফরম্যাটিং |
| alphametics | কঠিন | লেজিনেস |
| forth | কঠিন | পার্সিং |
আপনার ট্র্যাকে যে অনুশীলনীগুলো রাখতে চান সেগুলো বাছাই করার পর, পরের ধাপ হলো সেগুলো ইমপ্লিমেন্ট করা। একটি প্র্যাকটিস অনুশীলনী কীভাবে যোগ করবেন, তার বিস্তারিত নির্দেশনা রয়েছে প্র্যাকটিস অনুশীলনী যোগ করার ডকুমেন্টেশন-এ।