Month: April 2013

একটি জুস মেশিন ও তার আত্ম-কাহিনী

প্রচন্ড গরম চারদিকে । ক্লাস করে বাসায় ফিরছ তুমি । মনে মনে ভাবছ বাড়ি ফিরে একগ্লাস ঠান্ডা শরবত হলে খারাপ হয় না । তুমি আবার বেশ স্বাস্থ্য সচেতন । বাজারের যেনতেন জিনিস তুমি খাওনা । স্বাস্থ্য ভাল রাখার জন্যে তোমার প্রয়োজন ফলের শরবত । তাই তুমি আসার পথে বাজার থেকে কিনে নিলে ঢাউস একটা তরমুজ ! তাড়াতাড়ি বাসায় ফিরে তোমার বাসার শো-কেসে সাজিয়ে রাখা জুস মেশিনটা বের করলে,আর তরমুজটা কেটে আস্ত ভরে দিলে ওই মেশিনটার ভেতর ! ব্লাইন্ড করার সুইচটা অন করে দিলে সাথে সাথে । কিন্তু ব্লাইন্ড হচ্ছে নাহ অনেকক্ষন চেষ্টার পর চালু হল মেশিনটা । ব্লাইন্ড করার শেষ হওয়ার পর তোমার জন্যে প্রস্তুত লাল টকটকে তরমুজের জুস !!!

এতক্ষণ জুস বানানোর কথা শুনে তোমারও নিশ্চয় জুস খাওয়ার তেষ্টা পেয়ে গেছে ? হা,আমারও জুস খেতে বড্ড ইচ্ছে করছে । কিন্তু জুস খেতে যাওয়ার আগে তোমাকে কিছু কথা কানে কানে বলে যায়।
এতক্ষণ যে জুস মেশিনের কথা আমি বললাম প্রোগ্রামিং-এ এই মেশিন গাল ভরা নামটা কি জানো?


“কম্পাইলার”!!

সত্যই “কম্পাইলার”!! (এই নামের জন্যে আমি দায়ী নয়…:P) 

এ কটমটে নামটাই কিনা আমাদের প্রোগ্রামিং জীবনের শুরুতেই এটা কাজ করতে চাই নাহ এটা সমস্যা সেটা সমস্যা খালি সমস্যাই লেগে থাকে । আর আমাদের প্রোগ্রামিং – এর জুসের যে আনন্দ সেটা পেতে দেয় না !!!

এইবার আর একটু সবুর করোঁ ,জুস আমরা এখনই খেতে যাব । যাওয়ার আগে ওই জুসটা কিভাবে বানাবো বা মেশিনটা কিভাকে কাজ করে তা একটু জেনে নি , ঠিক আছে ?
হা , এই মেশিন থেকে জুস (মানে প্রোগামের আউটপুট) পেতে হলে এতে আমাদের  আগে দিতে হবে  একটা তরমুজ ( মানে-কোড )। কিন্তু আগে দেখে নিতে হবে তরমুজটা পচা নাহ কি ভাল (মানে-কোডে ভুল/বাগ) আছে কিনা ! সেটা দেখবে কি করে কেন 
ব্লাইন্ড করার সুইচটা অন করো ( রান বাটন প্রেস করো ) । এখন যদি কোন কিছু নাহ হয় তবে বুঝে নাও তোমার ব্লাইন্ড মেশিন নষ্ট । আসলে ব্লাইন্ডিং মেশিন নষ্ট নাহ তোমার ব্লাইন্ডিং মেশিনটা একটু অন্য রকম পচা তরমুজ পাইলেই সে চালু হই নাহ । যখন চালু হবে নাহ বুঝে নিবে তোমার তরমুজ ঠিক নাই আর তরমুজ মানে কি জানি কোড । তাহলে অবশ্যই তোমার কোডে ভুল আছে  । আর কোডে ভুল থাকলে ব্লাইন্ডিং মেশিন  ( কম্পাইলার ) কাজ করবে নাহ ।
যখনই তুমি ভাল একটা তরমুজ  ব্লাইন্ডিং মেশিনের মধ্যে দিবে মানে বাগবিহীন কোড যখন রান করতে সক্ষম হবে তখনই তুমি পেয়ে যাবে সুস্বাদু জুস ( আউট পুট ) !!!
অনেকের মনে হয় এতক্ষণে প্রশ্ন জেগেছে , আচ্ছা এতক্ষণ যে মেশিনটা ( কম্পাইলার ) নিয়ে কথা বললাম সেটাই বা তৈরি হয় কিভাবে ? আমরা এই প্রশ্নটারো উত্তর জানবে,তবে প্রোগামিং-এ আমরা আর একটু বড় হলে , ঠিক আছে ? …:)
আশা করি আমার এই লিখাটা যারা অন্তত প্রোগ্রামিং ভালবাসে কিংবা প্রোগ্রামার হওয়ার স্বপ্ন দেখে,তাদের স্বপ্নটাকে আরো খানিকটা রং দিতে পারবে। যারা একেবারে নতুন তাদের জন্য এই লেখা আমার । আমি মূলত সাধারণভাবে 
কম্পাইলার কি করে সেটা জানানো চেষ্টা করেছি । হ্যাপি প্রোগ্রামিং…:)

কোডব্লক কম্পাইলারের ডাউনলোড লিংকঃ- http://www.codeblocks.org/downloads/26 (96.6 MB)

Author: Osman
About the Guest Author Chowdhury Osman: More Information click here
Posted by Shipu Ahamed in TimePass, 0 comments

গ্রাফ থিওরি এবং একটি রুপকথার গল্প

পোস্টের শুরু এক গল্প দিয়ে যেখানে এক রাজ্যে এক রাজার কোন সন্তান ছিল না । রাজার মনে খুব দুঃখ। রাজা আর রাণী সারাদিন মন খারাপ করে থাকে। এক দিন ভাগ্য দেবতা তাদের প্রতি প্রসন্ন হলেন। রাণীর গর্ভে সন্তান আসলো। কিন্তু গোল বাধলো ৯ মাস পর যখন সন্তান প্রসবের সময় আসলো রাণী এক মহা বিপদে পড়লেন রাজা সবাইকে বললেন যে যে কোন মুল্যে রাণীকে সুস্থ করে তুলতে হবে সবাই রাজার কথা মত রাণীর জন্য দাওয়াই খুজতে বের হল। সেখানে রাজার সেনাপতিরা এক অদ্ভুত সূর্যমুখী ফুলের সন্ধান পেলেন যেখানে ফুলটি দিনের রাতের বেলায়ও জ্বলজ্বল করে। সেনাপতি সেই ফুল রাণীর জন্য নিয়ে এলেন। এবং সেই ফুল ধোয়া পানি খেয়ে রাণী এক সুন্দর ফুটফুটে কন্যা সন্তান জন্ম দিলেন। যার চুল ছিল সোনালী আর সেই চুল ও কেউ গান গাইলে জ্বলজ্বল করতো। এখানে সেই ফুল ছিল এক ডাইনি বুড়ির দখলে যে তার ফুল হারিয়ে পাগল হয়ে গিয়েছিল। কারণ সেই ফুলের ছিল এক আশ্চর্য গুন যেখানে সেই ফুল কোন অসুস্থ মানুষকে সুস্থ করতে পারতো আর সেই ফুলের গুণে সেই ডাইনি আর যৌবন ধরে রাখতে পেরেছিল। ডাইনির নজর ছিল সেই রাজকন্যার উপর আর তাই এক রাতে সে সেই রাজকন্যাকে চুরি করে এক উচু টাওয়ারের উপর লুকিয়ে রাখলো আর তাকে বলল যে বাইরের দুনিয়া খুব ভয়ংকর সেখানে মোটেও যাওয়া যাবের না। আর সে নিজে তার মা সেজে তারসব কাজ করে দিত। ধীরে ধীরে সেই রাজকন্যা সেই ডাইনিকেই তার মা জেনে বড় হল আর জানল যে বাইরের দুনিয়া তার জন্য এক বিভিষীকাময় জায়গা।
আমাদের সবার অবস্থা সেই রাজকন্যার মত। আমাদের ভেতরে এক ডাইনি বুড়ি সব সময় যে গ্রাফ থিওরি হল এক বিভিষীকাময় জায়গা আর আমরা ভয়তে সেদিকে ফিরেও তাকাই না।
Back to the story: ধীরে ধীরে রাজকন্যার বয়স বাড়তে থাকলো আর সে বাইরের জগতের প্রতি আগ্রহী হয়ে উঠলো। এমন সময় তার ঘরে আসলো এক চোর যে কিনা তার মুকূট চূরি করে পালিয়েছে। রাজকন্যা বাইরের দুনিয়া দেখার কিঞ্চিত ভরসা পেল। আর নিজেকে বোঝাল যে বাইরের দুনিয়া যতই খারাপ সে একবার সেখানে যাবেই যাবে। আর আমাদের জন্য সেই বার্তা বয়ে এনেছে আমাদের সবার প্রিয় সবচেয়ে সমৃদ্ধ বাংলা ব্লগ শাফায়েতের ভাইয়ের ব্লগ। বর্তমান সময়ের সব থেকে সমৃদ্ধ বাংলা টিউটোরিয়াল ব্লগ। এতটুকু পড়ার পর তোমার মনে যদি একটু সাহস সঞ্চার হয়ে থাকে তাহলে গ্রাফ কি জেনে আসতে পারো এখান থেকে। তারপর গ্রাফ কিভাবে variable এ store করতে হয় তা জানতে পারো এখানথেকে আর এখান থেকে । Back to the story : রাজকন্যা চোরের সাথে বের হবার পর তার তো মাথা খারাপ অবস্থা সে বাইরের দুনিয়া দেখে পুরো পুরি বিস্মিত আর হতভম্ব সে নিজে বুঝতে পারলো যে তার তার মা তার সাথে যা বলেছে যা সে যা জেনেছে তা পুরোপুরি মিথ্যা। তুমি যদি গ্রাফের আগের দুটো টিটোরিয়াল পড়ে থাকো তাহলে নিশ্চয় বুঝে গেছো যে তুমি যা জানতে তাও প্রায় পুরোপুরি মিথ্যা আর গ্রাফ খুব সহজ জিনিস। এখন তুমি যদি গ্রাফের দুনিয়া ঘুরে দেখতে চাও তাহলে তোমাকে গ্রাফ ট্রার্ভাস জানতে হবে আর তার জন্য আছে দুটো পদ্ধতি সে দুটো হল BFS আর DFS আর এদুটো আসলে কি তা জানতে তোমাকে BFS এর জন্য এখান থেকে আর DFS এর জন্য এখান তেকে ঘুরে আসতে হবে।আর যদি BFS কোড জানতে চাও তাহলে এখানেছোট্ট একটা উকি দিয়ে আসো।  এখন তুমি গ্রাফের মোটামুটি expert বলা যায় এখন নিজের যোগ্যতা প্রমাণের জন্য হোক আর বন্ধুদের তাক লাগানোর জন্য হোক তুমি জলদি কয়েকটা problem solve করে ফেলতে পারো যদি জানতে চাও কোন গুলো তাহলে দেখ এই পোষ্টের শেষে অথবা uvatoolkit এ গিয়ে BFS লিখে একটা search মারো তুমি যত বেশি problem solve করবে তোমার লজিক তত develop করবে আর তুমি তত বড় মাপের problem solver হিসাবে আত্মপ্রকাশ করবে যদি ওয়া খাও তাহলে খুব খুশির কথা কারণ তুমি একটা নতুন জিনিস শেখার সুযোগ পেলে যা আগে জানতে না। এখন যদি আবার গল্পের কথা মনে পড়ে তাহলে চল বাকিটুকু শুনে আসা যাক । রাজকন্যা পৃথিবী ঘোরা শুরু করার পর সে বুঝতে পারলো যে সে আসলে এত দিন মিথ্যার মধ্যে ছিল তারপর সে এক বিশাল adventure এর মধ্যে দিয়ে তার মা বাবাকে আবিষ্কার করে আর জানতে পারে তার আসল পরিচয় শেষ হয় এক শ্বাসরুদ্ধকর গল্পের। যারা আমার মত একটু হালকা পাতলা মুভি দেখ তারা নিশ্চয় বুঝে গেছ আমি কোন ছায়াছবির কথা বলতে চাইছি আমি আসলে Tangled এর গল্প বললাম যার মুল নাম রুপাঞ্জেল আর এটা একটা Spanish রুপকথা। আমি যত সহজে গল্পটা শেষ করে দিলাম আমাদের আসল গ্রাফ থিওরি শেখা কিন্তু এতটা সহজে শেষ হবে না আমাদের আরো অনেক পথ যেতে হবে আর আমাদের adventure টাও রুপাঞ্জেলের থেকে কোন অংশে কম হবে না । এখনো তোমাকে গ্রাফ থিওরির অনেক অ্যালগো জানতে হবে। MST গ্রাফের খুব গুরুত্বপূর্ণ একটা জিনিস তোমাকে MST কি জানতে উকি দিতে হবে এখানে আর কিভাবে MST বের করা যায় তা জানতে দেখতে হবে এখানে আর এখানে। আর তুমি যদি শর্টকার্ট মারতে চাও তবে তুমি শর্টেস্ট পাথ শিখে আসো এখান থেকে । শর্টেস্ট পাথ , MST এর বেলায়ও BFS এর মত একই কথা প্রযোজ্য uvatoolkit গিয়ে MST লিখে একটা search মারো যা আসবে solve করা শুরু করে দাও এখানে তোমাকে প্রত্যেক problem এর জন্য অ্যালগোটাকে অনেক ভাবে modify করা লাগবে যার মধ্যে দিয়ে তুমি গ্রাফ থিওরিতে হালকা পাতলা বস হতে শুরু করবে।

গ্রাফ থিওরি আমি নিজেও অনেক ভয় পাই তবে লেখাটা পরে অনেকটা ভয় কেটে গেছে । লেখাটা মূলত গ্রাফ থিওরিকে নিয়ে আমাদের যে ভয় সেটা কাটানোর জন্য । সিয়াম ভাইয়ের চমৎকার একটা লেখা খুবই ভাল লেগেছে তাই আমার ব্লগে নাহ দিয়ে পারলাম নাহ অবশ্য আমি কিছু এডিট করেছি তবে সেটা খুবই সামান্য । 
অরিজিনাল পোষ্টের লিঙ্ক এখানে ।

Posted by Shipu Ahamed in Graph Theory, 1 comment

Light Oj 1102 – Problem Makes Problem

Problem Link

Solution :-

 

Posted by Shipu Ahamed in Light Oj, Programming, 0 comments

Uva 12619 – Just Make A Wish

Problem Link

Solution :-

 

Posted by Shipu Ahamed in Programming, Uva, 0 comments

Uva 344 – Roman Digititis

Problem Link

Solution :-

 

Posted by Shipu Ahamed in Programming, Uva, 0 comments

LightOJ 1113 – Discover the Web

Problem Link

Solution :-

 

Posted by Shipu Ahamed in Light Oj, Programming, Stack, 0 comments

Uva 10062 – Tell me the frequencies!

Problem Link

Solution :-

STL Function use করার জন্য সবচেয়ে বেষ্ট প্রবলেম এটা । একটা প্রবলেম অনেক ভাবে করা যাই যদি কেউ STL Function use করা শিখতে চাই তাদের জন্য আমরা কিছু বন্ধু চেষ্টা করেছি যে কিভাবে use করতে হবে সেটা দেখানোর ।

১.  map , priority_queue , iterator

২.  map ,  iterator , struct

৩.  map ,  iterator , set

৪.  map ,  iterator , pair

Some Test Case :

প্রবলেম এর সলিউশন গুলো দেয়ার জন্য ধন্যবাদ আলিম , অঞ্জান ও মাহবুবকে ।

Posted by Shipu Ahamed in Programming, STL, Uva, 0 comments

Uva 10130 – SuperSale

Problem Link

Solution :-

 

Posted by Shipu Ahamed in Dynamic Programming, Programming, Uva, 0 comments

Uva 514 – Rails

Problem Link

Solution :-

 

Posted by Shipu Ahamed in Programming, Stack, Uva, 3 comments

Uva 417 – Word Index

Problem Link

Solution :-

 

Posted by Shipu Ahamed in Graph Theory, Programming, Uva, 0 comments