বেশির ভাগ প্রোগ্রামার সমস্যা সমাধান (Problem solving) করার জন্য সি++,সি,পাইথন ইত্যাদি ব্যাবহার করে থাকেন । কিন্তু অনেকেই আছে যাদের প্রথম প্রোগ্রামিং ভাষা হয় জাভাস্ক্রিপ্ট অর্থাৎ জাভাস্ক্রিপ্ট দিয়েই তাদের প্রোগ্রামিং এ হাতে খরি হয়।
আবার এরকম প্রোগ্রামারও আছে যারা সি++ বা সি অথবা পাইথন পারে এবং সেগুলো দিয়েই সমস্যা সমাধান (Problem solving) করে । কিন্তু যখন জাভাস্ক্রিপ্ট শিখতে আসে তখন হয়তো কিছু সমস্যা অনুশীলন করার জন্য জাভাস্ক্রিপ্ট দিয়ে চেষ্টা করতে চায় ।
যার যে কারণই হোক নাহ কেন, সত্যি কথা বলতে জাভাস্ক্রিপ্ট দিয়েও বিভিন্ন অনলাইন জাজে সমস্যা সমাধান (Problem solving) করা যায় যেমনঃ URI, CODEFORCES, SPOJ, HACKEREARTH, HACKERRANK,CODECHEF ETC.
জাভাস্ক্রিপ্ট দিয়ে সমস্যা সমাধান (Problem solving) করার প্রক্রিয়া দেখানোর মূল উদ্দেশ্য হচ্ছে সামনের ডাটা-স্ত্রাকচার ও অ্যালগরিদম দিয়ে আলোচনা করার সময় ইমপ্লিমেন্টেশন সহ আলাদা আলাদা করে কিছু সমস্যা ও সমাধান থাকবে । এবং সেই সমাধান গুলো জাভাস্ক্রিপ্ট দিয়ে করা হবে যাতে তখন বুঝতে সুবিধা হয় । এখন আসল কাজে ফিরে আসি -
১। আপনি যে কোড এডিটর পছন্দ করেন তা অবশ্যই আপনার কম্পিউটারে ডাউনলোড (dowenload) এবং ইন্সটল(install) থাকতে হবে । যেমন - vscode, sublime , notepadd++, webstrom ইত্যাদি ।
2. আপনার কম্পিউটার অপারেটিং সিস্টেম অনুযায়ী জাভাস্ক্রিপ্ট শেল ডাউনলোড করতে হবে এই লিঙ্ক থেকে ।
আমি Windows 64 bit এর টা ডাউনলোড করে নিলাম । ডাউনলোড শেষে আপনার পছন্দ অনুযায়ী যেকোনো ড্রাইভের যেকোনো ফোল্ডারে পেস্ট করবেন । তারপর ডাউনলোডকৃত ফাইলটি আনজিপ (unzip) করে ফেলেন ।
এরপর ফোল্ডারে প্রবেশ করেন -
প্রবেশ করার পর এইরকম ইন্টারফেস দেখতে পারবেন । এখন এই প্রবেশকৃত ফোল্ডারের ভেতর একটা যেকোনো নামে জাভাস্ক্রিপ্ট ফাইল তৈরি করুন -
আমি app নামে জাভাস্ক্রিপ্ট ফাইল তৈরি করেছি । এখন আমার যা কোড লিখার এই app ফাইলেই লিখবো । এখন একটু লক্ষ্য করলে দেখবেন যে, js.exe নামে একটা Command Prompt আছে আপনি যদি এটাতে দুইটা ক্লিক করেন তাহলে Command Prompt টি ওপেন হবে -
ওপেন হয়েছে । Command Prompt এর যে ইন্টারফেসটি দেখতে পাচ্ছেন সেইটা আমাদের সাহায্য করবে জাভাস্ক্রিপ্টের আউটপুট পেতে । আমি app.js ফাইলে একটি প্রোগ্রাম লিখি -
আমি এক লাইনে একটি প্রোগ্রাম লিখেছি যা Hello world! লিখাটি প্রিন্ট করবে । এখন এই আউটপুট দেখার জন্য আমরা Command Prompt টি ওপেন করে জাভাক্রিপ্ট ফাইলটি লোড করবো এই কমান্ড দিয়ে load("app.js") -
load("app.js") কমান্ডটি লিখে Enter দিলেই রেজাল্ট দিয়ে দেয় যা আমরা উপরে দেখতে পাচ্ছি । এখন দেখি কিভাবে অনলাইন জাজে সমস্যা সমাধান করা হয় প্রথমে দেখি URI অনলাইন জাজে -
জাভাক্রিপ্ট দিয়ে প্রথমে এই সমস্যা টা সমাধান করি -
উপরোক্ত সমস্যার জন্য সমাধান লিখে ফেললাম । এখন সমাধানটি সাবমিট করার সময় আমাদের কে কিছু কোডের সাহায্য নিতে হবে যা নিচে দেওয়া হইলো -
"use strict";
process.stdin.resume();
process.stdin.setEncoding("utf-8");
function print(x) {
console.log(x);
}
let inputString = "";
let currentLine = 0;
process.stdin.on("data", (inputStdin) => {
inputString += inputStdin;
});
process.stdin.on("end", () => {
inputString = inputString.split("\n");
main();
});
function readline() {
return inputString[currentLine++];
}
// code start
function main() {
// write code here
}
এখন আমাদের লিখা সমাধানটি উপরোক্ত ব্রয়লার কোডে main() ফাংশের ভেতর পেস্ট করে দিবো -
আমাদের সমাধানটি main() ফাংশনের ভেতর পেস্ট করে দিয়েছি এখন এইখানে গিয়ে সাবমিট করি -
সাবমিট করার সময় অবশ্যই আমাদের language হিসেবে JavaScript কে সিলেক্ট করতে হবে । এখন সাবমিট করি -
বুম! আমাদের কোড Accepted ।
এখন আমরা যখন app.js বা আপনি যে ফাইল তৈরি করেছেন সেখানে কোড করার সময় কিছু জিনিস হয়তো জানা দরকার যেমন -
1. print() - কোনো কিছু প্রিন্ট করতে। উপরের ব্রয়লার কোডে যদি লক্ষ্য করেন print() নামে একটা ফাংশন আছে যা console.log() কেই পয়েন্ট করে ।
2. readline() - ইউজারের কাছে থেকে ইনপুট নিতে ব্যাবহার করা হয়। যেমন - যদি আমি একটি ইন্টিজার নাম্বার ইনপুট নিতে চাই তাহলে লিখতে হবে -
let num = parseInt(readline());
আবার কোনো স্ট্রিং নিতে চাইলে ,
let str = String(readline());
লিখতে হবে । আবার অনেক সময় লুপের ওপর নির্ভর করে আমাদের এক লাইনে অনেক গুলো ইনপুট নেওয়ার প্রয়োজন হতে পারে তখন -
let multiples = readline().split(" ").map((x) => parseInt(x));
এইভাবে নিতে হবে আশা করি বুঝতে পারছেন । এবার জাভাস্ক্রিপ্ট দিয়ে Codeforces এ কিভাবে সমস্যা সমাধান করা যায় তা দেখা যাক । আমি Codeforces এর এই সমস্যাটি সমাধান করলাম -
var tc = parseInt(readline());
for (; tc--;){
var sentence = String(readline()).toLowerCase();
var intoArray = sentence.split('');
if(intoArray.length > 10){
var first = intoArray[0], last = intoArray.slice(-1);
var wordNumber = intoArray.length -2 ;
var arrageLikeArray = [first, wordNumber , last].join('');
print(arrageLikeArray);
}else{
print(sentence);
}
}
এখন ল্যাংগুয়েজ জাভাস্ক্রিপ্ট ও সমস্যা সিলেক্ট করে কোড পেস্ট করি -
সাবমিট করি -
কোড Accepted । একটা জিনিস মনে রাখবেন Codeforces এ যখন JavaScript সিলেক্ট করবেন তখন ব্রয়লার কোডসহ সাবমিট দেওয়ার প্রয়োজন হয় নাহ । কিন্তু node.js সিলেক্ট করলে ব্রয়লার কোডসহ সাবমিট করতে হবে ।
- অন্য সব অনলাইন জাজে-
Hackerrank, codechef, atcoder এবং hackerearth এ কোড সাবমিট করার সময় ব্রয়লার কোডের প্রয়োজন পড়ে । তখন ব্রয়লার কোডের main() ফাংশনের ভেতর আপনার Solution পেস্ট করে দিবেন এবং যে জাজে কোড সাবমিট করবেন সেখানে JavaScript অথবা Node.js সিলেক্ট করে নিবেন ।
এবার আসি leetcode এ কিভাবে সমস্যা সমাধান করবেন ?
জাভাস্ক্রিপ্ট দিয়ে leetcode এ সমস্যা সমাধান করা অনেক সহজ প্রথমে একটা প্রব্লেম ভালো ভাবে পড়ে কোড লিখে javascript সিলেক্ট করে সাবমিট করলেই হয় ।
অন্য সব জাজের মতো ব্রয়লার কোড বা বাড়তি কোনো কিছুর প্রয়োজন হয় নাহ । আমরা সচরাচর যেভাবে জাভাস্ক্রিপ্ট দিয়ে কোড লিখি সেভাবে লিখতে পারলেই এখানে সমস্যা সমাধান করতে কোনো অসুবিধা হবে নাহ ।
আমি এই সমস্যাটি নিম্নোক্ত ভাবে সমাধান করলাম -
const characterMap = (str) => {
const charMap = {};
for (let char of str) {
charMap[char] ? charMap[char]++ : (charMap[char] = 1);
}
return charMap;
};
var findTheDifference = function(s, t) {
let for_s = characterMap(s);
let for_t = characterMap(t);
let char = '';
for(let key in for_s){
if(for_s[key] !== for_t[key]){
char = key;
}
}
let str1 = s.split('');
let str = t.split("").map((item) => {
if(!str1.includes(item)){
char = item ;
}
})
return char;
};
এখন ল্যাঙ্গুয়েজ JavaScript সিলেক্ট করে সাবমিট করি -
আমাদের কোড Accepted । আশা করি এখন জাভাস্ক্রিপ্ট দিয়ে বিভিন্ন অনলাইন জাজে সমস্যা সমাধান করতে পারবেন আর কোনো সমস্যা হবে নাহ ।
রেফারেইন্স - নুর ভাইয়ের এই ভিডিও দেখতে পারেন ।
0 comments:
Post a Comment