18 October 2010 0 Comments

C++ STL :: pair (এসটিএল পেয়ার)

লিখেছেন – যোবায়ের

যারাই কিনা সি/সি++ নিয়ে বেশকিছুদিন নাড়াচাড়া করছেন, তারা প্রায় সবাই সি এর একটা দারুন জিনিস স্ট্রাকচার-এর সাথে পরিচিত, আর, আরেকটু অ্যাডভান্সডরা তো মনে হয় অলরেডি সি++ এর ক্লাস নামের জিনিসটা মোয়া বানিয়ে ফেলেছে।

সি একটা ফাটাফাটি ল্যাঙ্গুয়েজ আর সি++ এর কথা তো বলাই বাহুল্য। যারা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর সুবাতাস পেয়েছেন তারা এটা আরো ভাল করে জানেন। আমরা জানি, সি++ এ কিছু প্রিমিটিভ ডাটা টাইপ ডিফাইন করা আছে, যাদের উপরে আমরা খুব সহজেই বিভিন্ন অপারেশন চালাতে পারি, কিন্তু মাঝে মাঝে এই রকমের ডাটা টাইপের ব্যবহার আমাদের কে ঝামেলায় ফেলতে পারে। যেমন, মনে করা যাক আমাকে একটা 2D গ্রিডের কিছু পয়েন্ট স্টোর করতে হবে। শুধু int টাইপের অ্যারে দিয়ে এটা মেইনটেইন করাটা বেশ মুশকিলের ব্যাপার। কিন্তু যদি এরকম একটা ডাটা টাইপ থাকতো ‘point’ নামে, যা কিনা (x, y) আকারে কো-অর্ডিনেট রাখতে পারতো!!! সি এ সেই ব্যাবস্থা করেই দেয়া আছে, যেন প্রোগ্রামাররা চাইলেই ইচ্ছা মতো ডাটা টাইপ বানিয়ে নিতে পারেন, আর সি++ এটাকে আরেক ডিগ্রি এগিয়ে নিয়ে গেছে। এখানে প্রোগ্রামার চাইলে তার বানানো ডাটা টাইপের আচার আচরণও বলে দিতে পারেন।

কিন্তু, প্রশ্ন হল, এটা কন্টেস্ট প্রোগ্রামিং এর জন্য কতটা সুইটেবল?

মূল লেখাটি পাওয়া যাবেঃ http://zobayer2009.wordpress.com/2010/10/01/c-stl-pair/

16 October 2010 0 Comments

প্রোগ্রামিং প্রতিযোগিতার কর্ম-পরিকল্পনা

অনুবাদ- আহমেদ শামসুল আরেফীন।

(মূল ইংরেজী ভার্সন – স্টিভেন হালিম ও রব কোস্তাদ (USACO ট্রেনিং সাইট))

সেরা প্রোগ্রামারের – কি চাই?

সবার আগে চাই কর্ম-পরিকল্পনা। আর তাই প্রোগ্রামিং প্রতিযোগিতায় ভাল করার জন্য প্রথমেই চাই তিনটি জিনিষ-
১. অ্যালগোরিদম ও গণিত এর ভাল ধারণা। কারণ প্রোগ্রামিং প্রতিযোগিতা বেশির ভাগ এ দুটির উপর ভিত্তি করে আসে।
২. একটি অ্যালগোরিদমকে প্রোগ্রামিং কোডে লেখার দক্ষতা। অ্যালগোরিদমগুলো সিওডো-কোডে (সাংকেতিকভাবে) লেখা থাকে।
৩. টিম মেম্বারদের সাথে মিলেমিশে কাজ করার ক্ষমতা।

অ্যালগোরিদম কি?

সহজ কথায়, অ্যালগোরিদম হলো যে কোন সমস্যা সমাধাণের ধাপগুলোর বণর্না। একটি ভাল অ্যালগোরিদম কাজ করে ধারলো ছুরির মতো। যা সমস্যাটিকে কেটে ছোট করে ফেলে।
একটি ভাল অ্যালগোরিদমের বৈশিষ্ট্য কি?
১. সেটি অবশ্যই থামবে/ টারমিনেট করবে।
২. যখন থামবে, অবশ্যই কোন ফলাফল দেবে।
৩. অবশ্যই কম সময়ে সবগুলো ইনপুটের জন্য সবচেয়ে সঠিক আউটপুট দেবে দক্ষতার সাথে।
কিছু বুড়ো-আঙলা টিপ্স
১. সবচেয়ে বড় সংখ্যা হলো- “long long” is 2^63-1: 9*10^18 (up to 18 digits)
২. শ সংখ্যক লুপ হ সংখ্যক বার ঘুরলে কমপ্লেক্সিটি হবে-O(n*k)
৩. হ সংখ্যক সংখ্যাকে সাজালে বা সর্টিং করা হলে সময় নেবে O(n log n)
৪. O(n log n) প্রোগ্রামিং প্রতিযোগিতার জন্য সবচেয়ে ভাল টাইমিং।

সমস্যার খসড়া অ্যালগোরিদম লিখুন

প্রবলেম টাইপ নির্ধারণের পরই এমন হতে পারে স্ট্যানডার্ড যে অ্যালগোরিদমটি আপনার সমস্যার জন্য আছে তা আপনার সমস্যার জন্য ব্যবহার করতে চাইলে খানিকটা পরিবর্তন করেই ব্যবহার করতে হবে। তাই আপনার অ্যালগোরিদমের খসড়া করুন।

অ্যালগোরিদম শিখতে হলে যা যা শিখতে হবে

টাইম কমপ্লেক্সিটি শিখতেই হবে। তাহলেই বুঝতে পারবেন আপনার অ্যালগোরিদমটি অন্যদের চেয়ে কতটা ভাল কাজ করে।
ইনপুটের সাপেক্ষে-

Order of Growth n Time (ms) Comment
O(1) 1000 1 Excellent, almost impossible for most cases
O(log n) 1000 9.96 Very good, example: Binary Search
O(n) 1000 1000 Normal, Linear time algorithm
O(n log n) 1000 9960 Average, this is usually found in sorting algorithm such as Quick sort
O(n^2) 1000 1000000 Slow
O(n^3) 1000 10^9 Slow, btw, All Pairs Shortest Paths algorithm: Floyd Warshall, is O(N^3)
O(2^n) 1000 2^1000 Poor, exponential growth… try to avoid this. Use Dynamic Programming if you can.
O(n!) 1000 uncountable Typical NP-Complete problems.

সময়ের সাপেক্ষে-

Order of Growth Time (ms) Max Possible n Comment
O(1) 60.000 ms Virtually infinite Best
O(log n) 60.000 ms 6^18.000 A very very large number
O(n) 60.000 ms 60.000 Still a very big number
O(n log n) 60.000 ms ~ 5.000 Moderate, average real life size
O(n^2) 60.000 ms 244 small
O(n^3) 60.000 ms 39 very small
O(2^n) 60.000 ms 16 avoid if you can
O(n!) 60.000 ms 8 extremely too small.

মনে রাখতে হবে কমপ্লেক্সিটির ক্রম- constant < log n < n < n log n < n^2 < n^3 < 2^n < n!

কোড টেস্টিং এর আর্ট শিখুন

এবার হলো টেস্ট ইনপুট তৈরী করার পালা। এই কাজটি করতে হলে-
১. প্রাথমিকভাবে সরল ইনপুটগুলো, যা প্রশ্নে উল্লেখ করাই আছে।
২. এবার ইনপুটের সর্বোচচ এবং সর্বনিু মান দিন।
৩. মাল্টিপল ইনপুট বিবেচনা করতে খেয়াল করুন ভেরিয়েবলকে বারবার সেট করা হলো কিনা?
৪. ট্রিকি টেস্ট কেসগুলো বিবেচনা করুন।
৫. নানা টেস্ট কেস দিয়েও আপনার প্রোগ্রামটিকে টেস্ট করতে পারেন।

এবার বিজয়ের ট্রিকস

১. কনটেস্টে প্রশ্ন পাওয়া মাত্রই সেগুলোকে ভাগ করে ফেলুন-
- ছোট/সহজ
- বড় কিন্তু করা আছে
- অপরিচিত। সাবধান অপরিচিত সমস্যা প্রথমে করার দরকারই নেই।
২. প্রবলেম সিলেক্ট করার পর অ্যালগোরিদম স্কেচ করে নিন, কমপ্লেক্সিটি হিসেব করুন, বিভিন্ন অ্যালগোরিমের মাঝে সবচেয়ে কার্য্যকরটা বেছে নিন।
৩. কোড করার আগে, গাণিতিকভাবে সমস্যাটি সমাধান করে নিন।
৪. এবার দ্রুত কোড করে ফেলুন।

টাইম ম্যানেজমেন্ট স্ট্র্যাটেজি

ধরা যাক এটি প্রবলেম নিয়ে অনেকক্ষণ বসে আছেন। এবার ভাবুন-

১. অ্যালগোরিদমটা কি ভুল?
২. ডাটাস্ট্র্যাকচারে কি কোন পরিবর্তন করতে হবে কিনা?
৩. অন্য সমস্যায় চলে যাবেন নাকি এটাই ঠিক করবেন?
৪. সবচেয়ে ভালো হয় যদি অন্য একজনকে দিয়ে নতুন করে ভাবুন।

প্রবলেম সেটারের কারসাজি

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

(মূল লেখাটি পাওয়া যাবে এখানে।)

11 October 2010 Comments Off

প্রোগ্রামিং প্রতিযোগিতার এর প্রাথমিক ধারণা

(লেখাটি অনুপম ভট্টাচার্য্যর স্মৃতির উদ্দেশ্য ডেডিকেট করা হলো। এটি ২০০৩ সালে তার পাঠনো (এবং হারিয়ে যাওয়া..) একটি টিউটোরিয়ালের অনুবাদ। আমেরিকায় ওয়াইন স্টেটের বিশ্ববিদ্যালয়ে পিএইচডি করতে গিয়ে অনুপম আজ লেক মিসিসিপির প্রবল ঝারো ঢেউয়ে হারিয়ে গেছে। তার করা অন্তত এই টিউটোরিয়ালটি থাকুক। তাই বাংলায় অনুবাদ করে দিলাম।)

প্রথম ধাপ- লক্ষ্য নির্ধারণ

প্রোগ্রামিং প্রতিযোগিতায় অংশ নেয়ার ও ভাল করার জন্য প্রথমেই চাই লক্ষ্য ঠিক করা। অনলাইন জাজে অংশ নিতে চাইলে প্রথমে এটা ঠিক করে নিন যে আপনি বেশি সংখ্যক সমস্যার সমাধান করতে চান নাকি কম সংখ্যক সমস্যা সমাধান করেও নিজের দক্ষতাকে বাড়াতে চান। সেক্ষেত্রে অবশ্য আপনাকে একই ধরণের সমস্যাই বেশি সমাধান করে যেতে হবে। যদি আপনি হন একজন নবীন প্রোগ্রামার তবে কিন্তু সহজ প্রোগ্রামিং সমস্যাগুলো সমাধান করাটাই বুদ্ধিমানের কাজ হবে।

সাধারনতঃ নবীন প্রোগ্রামারেরা যেই ভুলটা করে তা হলো- স্বল্প সময় ব্যয় করে প্রোগ্রামিং কোড/সংকেত লেখার জন্য কিন্তু সেখানে থেকে যায় নানান ভুল। এবার সেটাকে ঠিক করতে গিয়ে বাকি সময়টা নষ্ট করে।

একজন ভাল প্রোগ্রামারের সময়ের ভাগাভাগিটা কেমন হওয়া চাই?

একজন ভাল প্রোগ্রামারের কাছে সময়ের দামটা সবচেয়ে বেশি। তাই আপনি যদি ভাল প্রোগ্রামার হতে চান তবে সময়টাকে একটু মেপেই ব্যবহার করতে হবে।

* ১০% সময় ব্যয় করতে পারেন প্রোগ্রামিং কোড/সংকেত লেখার কাজে।
* ৪৫% সময় সমস্যাটি ভাবার জন্য।
* বাকিটা সময় সমাধানের সঠিকতা নির্ণয়ের কাজে।

এই অনুপাতটি আপনার কাজের ধরণের উপর নির্ভর করছে। নবীন প্রোগ্রামারেরা একই ধরণের প্রোগ্রাম সমাধান করে করে কোডিং লেখার সময়টিকে কমিয়ে আনতে পারবে।

ইনপুট/আউটপুট ফাইলের ব্যবহার

অনলাইন জাজে প্রোগ্রমিং প্র্যাকটিস করতে চাইলে কিন্তু ইনপুট/আউটপুট ফাইলের ব্যবহার করাটা চলবে না। কিন্তু সাধরণভাবে এটি ব্যবহার করে আপনি ডিবাগিং/ ভ্রমসংশোধনের কাজ করতে পারেন। ……(চলবে)।

4 October 2010 0 Comments

ইউনিভার্সিটি ডি ভ্যালাডলিড এর অনলাইন জাজ নিয়ে কিছু টিউটোরিয়াল লিখেছেন- শিশির

ইউনিভার্সিটি ডি ভ্যালাডলিড এর অনলাইন জাজ নিয়ে কিছু টিউটোরিয়াল লিখেছেন- শিশির।

“ইউনিভার্সিটি ডি ভ্যালাডলিড স্পেনের একটা ভার্সিটি। ওরা প্রোগ্রামিং কন্টেস্টকে গুরুত্ব দিয়ে একটা রিয়েলটাইম অনলাইন জাজ সাইট বানিয়েছে যেখানে প্রতিবছর বিভিন্ন দেশে ঘটে যাওয়া ন্যাশনাল অথবা ইন্টারন্যাশনাল কন্টেস্ট অথবা নামকরা প্রব্লেম-সেটার দের প্রব্লেম আর্কাউভ করে রাখা আছে এবং সবসময়ই আপগ্রেড হচ্ছে। এখানে তুমি বিনে পয়সায় অ্যাকাউন্ট খুলে প্রব্লেম পড়ে সেটা সলভ করে সাবমিট করতে পারবে এই সাইটটা বাংলাদেশের প্রোগ্রামারদের কাছে বেশ জনপ্রিয়। কিন্তু শুরুতে এখানে প্রব্লেম সলভ করতে গিয়ে অনেক অযথা ঝামেলায় পড়তে হয়। তাই এই সব টিউটোরিয়াল”

রেজিস্ট্রেশন করা এবং সহজ প্রব্লেমগুলো খুঁজে বের করা

ইনপুট নেয়া

এখানে ইউ.ভি.এ. এর কিছু প্রব্লেম এর সলিউশন

কিছু পরিচিত-অপরিচিত, কঠিন-ননকঠিন অ্যালগরিদম টিউটোরিয়াল।

প্রোগ্রামিং এর কিছু কমন রুটিন

পিরামিড

প্রোগ্রামিং ল্যাঙ্গুয়েজ টিউটোরিয়াল-

০১.প্রোগ্রামিং ল্যাঙ্গগুয়েজ কিভাবে কাজ করে

০২.সি তে তোমার প্রথম প্রোগ্রাম

০৩.সি এর একেবারে বেসিক কিছু জিনিস

০৪.শর্ত সাপেক্ষে কাজ করা

০৫.প্র্যাকটিস সেশনঃ ০১

০৬.অ্যারে

০৭.লুপ

০৮.প্র্যাকটিস সেশন ০২

০৯.ফাংশন

১০.পয়েন্টার

১২.ফাইল ইনপুট-আউটপুট

১৩.স্ট্রাকচার ইউনিয়ন

আর বিস্তারিত জানতে টুক করে ঢুঁ মারতে পারো- http://dewsworld.x10.mx/

4 October 2010 0 Comments

সি++ ভাষার টিউটোরিয়াল সমগ্র

লিখছেন- আহমেদ শামসুল আরেফীন

এই সি++ (ANSI-C++) ভাষার টিউটোরিয়ালগুলোতে সাধারণ কনসেপ্ট থেকে শুরু করে অ্যারে, ক্লাস, এমনকি পলিমরফিসম ও টেমপ্লেটও ব্যখ্যা করা আছে।

[ Download পুরো টিউটোরিয়াল  PDF  আকারে ]

শুরুর কথা:
Instructions for use
বেসিক C++:
Structure of a program
Variables. Data Types.
Constants
Operators
Basic Input/Output
কন্ট্রোল স্ট্রাকচার:
Control Structures
Functions (I)
Functions (II)
আরও কম্পাউন্ড ডাটা টাইপ:
Arrays
Character Sequences
Pointers
Dynamic Memory
Data Structures
Other Data Types
Object Oriented প্রোগ্রামিং:
Classes (I)
Classes (II)
Friendship and inheritance
Polymorphism
অ্যাডভান্সড Concepts:
Templates
Namespaces
Exceptions
Type Casting
Preprocessor directives
C++ ইন/আউট:
Input/Output with files

আরও শিখতে চাও? তবে ঢুঁ মারোঃ

১. http://www.cplusplus.com/doc/tutorial/
২. http://www.cprogramming.com/tutorial.html

17 September 2010 3 Comments

কিছু কমন প্রোগ্রামিং রুটিন

লিখেছেন- শিশির

হ্যালো ওয়ার্ল্ড!

এসিএম সলভার এর বাংলা ভার্শনটা কানের পাশ দিয়ে যায় অথচ খুব একটা খেয়াল করা হয় নি। কি আজব! আজকে খেয়াল করেছি। তাই পোস্ট দিচ্ছি। ভার্সিটির ফার্স্ট টার্ম এ যখন দেখতাম সবাই প্রোগ্রামিংটাকে বেশ গুরুগম্ভিরভাবে নিচ্ছে তখন ভাবলাম কিছু লিখে ফেলি যাতে সবাই বুঝে আর আমারও কিছু নাম হয়! যাই হোক এভাবে প্ল্যান করতে গিয়ে একটা ওয়েবে প্রোগ্রামিং নিয়ে কিছু কিছু করে বাংলায় লিখতে থাকি। এখানে  (বেসিক্যালি কন্টেস্ট প্রোগ্রামিং এ) প্রায়ই লাগে একমন কিছু রুটিনের একটা আর্কাইভ আছে। আশা করি ভালো লাগবে। লিংক

বি.দ্র.হ.: পুরোটাই এখানে লিখতে চেয়েছিলাম, কিন্তু সময় লাগে। তাই শুধু লিংক ।

কিছু কমন প্রোগ্রামিং রুটিন।
15 September 2010 0 Comments

এসিএম আইসিপিসি এর গল্প

এসিএম আইসিপিসি এর গল্প

প্রোগ্রামার ইকরাম মাহমুদের এসিএম আইসিপিসি এর গল্প-

”ওয়াটারলু একটা সলভ করে ফেলল!

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

জান ভাই প্রথম প্রবলেমটা কোড করতে বসলো। আমরা টাইম লিমিট একসিডেড খেলাম, বাইসেকশনে টলারেন্স চেক করার ঝামেলা নিয়ে। জান ভাই টলারেন্স কমালো, আর আমি সাথে একটা চেক ভ্যারিয়েবল লাগিয়ে দিলাম, কিছুতেই দেড়শ বারের বেশি বাইসেকশন চালাবো না। জাজ সলুশন এক্সেপ্ট করলো।”

বিস্তারিত পড়ুনঃ সামইয়্যারইনে পড়ুন বাকি গল্প (এত্ত সুন্দর লেখাটি এর লেখক (ইকরাম মাহমুদ) কেন যেন  মুছে ফেলেছেন। প্রিয় লেখা বলে তার অনুমতি ছাড়াই এখানে জুড়ে দিলাম।) ভীষন ভাল লাগবে আশা করি।

ওয়ার্ল্ড ফাইনালস এর ঠিক আগের দিন জান ভাই বিছানায় শুয়ে একটা বিশাল ঘুম দিলো, আমাদের বলল যদি ভালো খাবার দাবার থাকে তাইলে যেন রুমে ফোন দেই। সেই ক’দিনে আমাদের অবস্থা একেবারেই খারাপ হয়ে গেছে। ইউরোপিয়ানরা একেবারেই রান্না বান্না করতে পারে না। আমি চিংড়ি দেখে একটা বিশাল লাফ দিয়ে চামুচ ভর্তি করে নিলাম, তারপর দেখি সেই চিংড়ি আধাসিদ্ধ (ইয়াক! ইয়াক!)। তারপর আমি আর মাহবুব মুজ এর কাবাব খাওয়া শুরু করি, আর গুনতে থাকি কয়টা খাইসি। ওই একটা জিনিসই যা খাওয়া যায়। তো আমরা সবাই একসাথে মাঝে মাঝেই দিপু ভাইয়ের বাসার খিচুড়ির কথা মনে করি, আর চোখ উড়ু উড়ু হয়ে যায়। তারপর স্টার কাবাবের বিরিয়ানির কথা মনে হয়.. চোখ আবার উড়ু উড়ু হয়ে যায়।

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

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

আমি ঠিক তখনি ব্যাপারটা বুঝি নাই, তো আমি আরো কিছুক্ষণ লাফাইলাম। তারপর আমরা দুজন রাস্তার ধারে একটা ফেরারি পড়ে থাকতে দেখলাম। আমার মনে হল, ওয়াও! ভালো জিনিস! আমিও একটা কিনবো কোন একদিন!

বেলুনটা চুপসালো পরের দিন।

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

আমরা গিয়ে দেখি আমাদের টেবিলটায় আমাদের কিছুই নেই। আমাদের নোটবুকগুলোও নেই, আমাদের ভার্সিটির নামওয়ালা বিশাল বোর্ডটাও নেই। আমার বুক ধুপপুক শুরু করলো, কিন্তু সাথে সাথে একটা লোক এসে বলল আমাদের জায়গা পাল্টানো হইসে। পড়বি তো পড়, ওয়াটারলুর ঠিক সামনে।

কিবোর্ডের উপর বড় বড় করে একটা কাগজে লেখা ছিল কিচ্ছু ধরা যাবে না। আমি সেজন্য দুই হাতে দুই হাত ধরে বসে থাকলাম। আমাদের মাথার উপর তারে একটা ক্যামেরা আসা যাওয়া করতে থাকলো, আমি আর জুব ভাই বসে বসে সেটার আসা যাওয়া দেখলাম। ওরা সুইডিশ একটা টিভিতে লাইভ টেলিকাস্ট করছিল, আর নেটেও ব্রডকাস্ট করছিল একই সাথে। আমার শুধু মনে হচ্ছিল, আমাকে ক্যামেরাটার দিকে তাকিয়ে হাসতে হবে, কারণ আপু বলসে ও লাইভ ব্রডকাস্টটা দেখবে বসে বসে.. কিন্তু মাথার উপরের ক্যামেরাটা আমাদের দিকে ঘুরলোই না!

তো একটা সময় কন্টেস্ট শুরু হলো, আমি একটা নোটবুক নিয়ে টেম্প্লেট লিখতে শুরু করলাম। তারপর টেম্প্লেট লিখে প্রবলেমসেট নিয়ে পড়তে শুরু করলাম – তখন -

ওয়াটারলু একটা সলভ করে ফেলল!

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

জান ভাই প্রথম প্রবলেমটা কোড করতে বসলো। আমরা টাইম লিমিট একসিডেড খেলাম, বাইসেকশনে টলারেন্স চেক করার ঝামেলা নিয়ে। জান ভাই টলারেন্স কমালো, আর আমি সাথে একটা চেক ভ্যারিয়েবল লাগিয়ে দিলাম, কিছুতেই দেড়শ বারের বেশি বাইসেকশন চালাবো না। জাজ সলুশন এক্সেপ্ট করলো।

জুব ভাই আমাকে বি প্রবলেমটা ধরিয়ে দিলো, আমি অর্ধেক বুঝলাম বাকি অর্ধেক কিভাবে করবো জানি না। জুব ভাই বলল আমি আমার অর্ধেকটুকু লিখলে, সে বাকিটুকু লিখে দিবে। তো আমি আমার অর্ধেকটুকু লেখা শুরু করলাম, জান ভাই তখন এফ করতে শুরু করলো। তো ব্যাপারটা হলো এরকম জান ভাই কিছুক্ষণ এফ লিখে, তারপর আমাকে কিবোর্ড ছেড়ে দেয়, আমি বি এর কোড লিখি, তারপর আবার জান ভাই আসে, তারপর আমি আবার বি খুলে বসি, আর দেখি আই হাই, আমি তো কিচ্ছু মনে করতে পারতেসি না, আমি কি লিখতে চাইসিলাম! তারপর আমি আবার বসে বসে কোডটা পড়ে মনে করার চেষ্টা করি আমি কি লিখতে চাইসিলাম, তারপর আবার লিখতে বসি। তারপর মনে হয়, দেখি বাকিরা কি করতেসে, তো আমি মনোযোগ দিয়ে র‌্যাংক লিস্ট নিয়ে পড়াশুনা শুরু করে দেই। তারপর জান ভাই হা করে আমাকে দেখে, তারপর গড়গড় করে বলে, “এই ফাহিম! কি করতেসো! কোড করো!” তখন আমার মনে হয়, আরে তাইতো! কি করতেসি! তারপর আবার কিছুক্ষণ পর আমি কোডের লুপগুলোর মাঝখানে হারায় যাই, তারপর ভ্যাবাচ্যাকা খাওয়া মুখ নিয়ে হা করে ওয়াটারলুর বেলুনের দিকে তাকাই থাকি, আর ভাবি, ম্যালকম শার্প! শার্প! তারপর জান ভাই আবার বলে, ফাহিমম!! কোড করো! তো এই ব্যাপারটা অনেকক্ষণ চলল, কারণ আমাদের এফ অনেকক্ষণ হলো না।

আমি খুব দ্রুত ফ্রাস্ট্রেটেড হয়ে যাই, জুব ভাই আমার কোডে ওর অংশ লেখা শুরু করলো, কিন্তু জিনিসটা ভজগট পাকাই গেলো, কারণ কোডটা ছোট করার জন্য আমি যেভাবে ডাটা স্ট্রাকচারগুলা সাজাইসিলাম, সেটা বুঝাতে গিয়ে খবর হয়ে গেলো। তারপর স্যাম্পল মিলল না। আমি আরো ফ্রাস্ট্রেটেড হয়ে গেলাম। আমি বসে বসে পিত্জা চিবালাম, আর ভাবলাম, আমি এখানে কি করতেসি? আমি তো কিছুই পারি না! তারপর পিত্জা চিবাইতে চিবাইতে আমি আবার ওয়াটারলুর বেলুন দেখতে থাকলাম, আর কন্সতান্তিন লোপিরেভ আর ম্যালকম শার্পের কাজ কারবার দেখলাম। তারপর আবার ভাবতে শুরু করলাম,আসলেই আমি এখানে কি করতেসি? আই ডোন্ট ডোন্ট বিলঙ হিয়ার! মাথার উপর ক্যামেরাটা আসা যাওয়া করতে থাকলো, জুব ভাই খাটাখাট করে কিবোর্ড চাপতে চাপতে ডিবাগ করতেসে। জান ভাই মাথা নিচু করে কাগজে দাগ কাটতেসে, আর মাঝে মাঝে মাথা তুলে বিষন্ন চোখে জিজ্ঞেস করতেসে “কি অবস্থা?” চারপাশে কিবোর্ড চাপার আওয়াজ.. একশটা কম্পিউটার থেকে.. সবার মাথার উপর অনেকগুলো বেলুন, আমাদের মাথার উপর মাত্র একটা.. আমি ধরে নিলাম, আমরা একটা প্রবলেম সলভ করেই বাসায় ফিরবো.. আমার খুব বাসায় গিয়ে ঘুমাতে ইচ্ছে করছিল মশারি দিয়ে.. কাথামুড়ি দিয়ে, ফোন বন্ধ করে..

জান ভাই ভুল খুঁজে পেল, সাত নম্বর বারের মত।
জুব ভাই সরে গিয়ে জায়গা করে দিলো জান ভাই ঠিকঠাক করে সাবমিট করলো, তারপর আবার এসে বসলো চুপচাপ। ওর দিকে তাকাই খুব মায়া লাগতেসিলো.. ওর শরীর খুব খারাপ ছিল.. এবং তারপরও সে হাল ছাড়ছিলো না.. যখন আমি এতটাই ফ্রাস্ট্রেটেড, যে আমি পিত্জা খাওয়া ছাড়া আর কিছুই করতে পারতেসি না.. আমি প্রবলেম পড়তে থাকলাম, কিন্তু.. আমি কোন আইডিয়া পাচ্ছিলাম না..

তখন জাজের রেসপন্স আসলো – সবুজ রঙে – ইয়েস!
আমাদের দুইটা হইসে.. আমি আবার র‌্যাংকলিস্ট ঘাটলাম, দেখে মনে হলো, আমরা যদি আরেকটা করতে পারি কোনভাবে আমরা র‌্যাংক পাবো।

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

আমি মোটামুটি চিল্লাচিল্লি করে নিজেকে বলতে থাকলাম এটা হবে! কিন্তু তারপরও আমি বারবার ভুলে যাচ্ছিলাম আমি আসলে কি লিখতে চাচ্ছি। কিন্তু আমি কোড লিখতে থাকলাম, কোডটা বড় হতে থাকলো.. বড় হতে থাকলো..

তারপর একটা সময় কোড লেখা শেষ হল, আমি কাঁপা কাঁপা হাতে সাবমিট করে সরে গেলাম। জান ভাই বসলো ডি কোড করার জন্য। তারপর একটা সময় ভার্ডিক্ট আসলো, আমি শুধু দেখলাম সেটার রং লাল, আমি ধরে নিলাম সেটা রং অ্যানসার, আমার চরম বাজে লাগল – আমি বললাম – আর্ঘঘঘঘঘঘঘঘঘঘঘ! জান ভাই ভ্রু কুঁচকে আমার দিকে তাকালো, তারপর বলল, “ঠিক করো! এটা প্রেজেন্টেশন এরর!” প্রেজেন্টেশন এরর দেয়, যদি প্রোগ্রাম ঠিক মতই আউটপুট দেয়, কিন্তু যদি আউটপুট ফরম্যাটে কোন ভুল থাকে। জুব ভাই প্রবলেম নিলো, আমরা একসাথে ঝুকলাম, তারপর দেখলাম আমি একটা সেমিকোলন এর জায়গায় কমা লিখসি!!

ঠিক ঠাক করার পর সবুজ রঙে ইয়েস আসলো! তাও অনেকক্ষণ পর..

তো আমাদের তিনটা প্রবলেম সলভ হলো। আমরা আসলেই র‌্যাংক পেলাম – ৪৯তম। জান ভাই তারপরের দিন প্লেনে উঠে দেশে ফিরে আসলো, আর আমরা আমাদের ফাইভ স্টার হোটেলটা ছেড়ে দিপু ভাইয়ের বাসায় গিয়ে উঠলাম। রুমটা শেষবারের মত বন্ধ করতে খুব খারাপ লাগলো.. তারপর আমরা একটা জাহাজে উঠলাম বাল্টিক সির উপর দিয়ে ফিনল্যান্ড যাবার জন্য।

বুয়েট চারটা সলভ করে ৩৪তম, আর নর্থ সাউথ দুইটা সলভ করে অনারেবল মেনশন। ভারতের দুইটা টিমই দুইটা করে সলভ করসে – অনারেবল মেনশন।

তারপর তার দুদিন পর আমরা প্লেনে উঠলাম ঢাকায় আসার জন্য। আমার দীপু ভাইয়ের জন্য খুব খারাপ লাগতেসিলো.. জুব ভাই বলল আমার ব্যাগে কিছু চকোলেট রাখতে হবে, ওর ব্যাগে জায়গা হচ্ছে না। তারপর প্লেনটা ঢাকায় নামলো.. আমি জুব ভাইদের বাসায় গেলাম, বিছানায় সব চকোলেট বের করে রেখে বললাম, আমি যাই এবার.. আমার তখন হাল্কা মন খারাপ লাগছিলো, কারণ আমার জন্য এয়ারপোর্টে কেউ আসেনি.. জুব ভাই বলল, আরি! কি কর? এই সব চকোলেট তো তোমার জন্য কিনসি!

জুব ভাই আমাকে বাসায় পৌছে দিলো.. রাস্তায় ছিল ভয়াবহ জ্যাম আর ভয়াবহ গরম।
সেদিন আমার ক্লাস শুরু হল, আমি একদিন ঘুমালাম বাসায় শুয়ে.. তারপর আমি ভার্সিটি যাওয়া শুরু করলাম, এবং এক সপ্তাহ পর আমি ভয়াবহ ফ্রাস্ট্রেটেড হয়ে গেলাম। আমি কোন ক্লাসেই কিছু বুঝতে পারতেসি না। আর ক্লাসগুলোতে চোখ খুলে রাখাও ভয়াবহ কঠিন কাজ। আমি বসে বসে আবার প্রবলেম সলভ করা শুরু করলাম, কিন্তু সব প্রবলেমগুলো আমাকে হালুম হালুম করে ভয় দেখানো শুরু করলো। রাশানরা কি পরিমাণ অমানুষের মত ট্রেইন আপ করে.. যে ওরা ওয়ার্ল্ড ফাইনালস এর সেটে নয়টা সলভ করে! টপকোডারে একটা ম্যাচ ছিল, আমি ২৫০ পয়েন্টার খুলে ভুল বুঝলাম, তারপর কোড টোড করে অনেক পরে খেয়াল করলাম আমি প্রবলেমটা ভুল বুঝছি.. আমি হাল ছেড়ে দিয়ে ৫০০ পয়েন্টার খুলে কোড করতে শুরু করলাম, কারণ সেটা ডিপি ছিল, কিন্তু কোডটা শেষ করতে পারলাম না, আর আমার একটাও সলভ হলো না, আর টপকোডারে আমার হলুদ রংটা নীল হয়ে গেলো..

তো আমার খুব খারাপ লাগলো। আমি শুধু প্রবলেম সলভ করতে পারি, তাও খুব ভালো না.. আমার রেজাল্ট জঘন্য (হবার কথা), আমি এখন ক্লাসে কিছুই বুঝি না, আমি বেশিরভাগ মানুষের সাথে কথা বলতে পারি না কারণ আমি কথা বলার কোন টপিক খুঁজে পাই না, তো আমার খুব বেশি বন্ধু নাই.. তারউপর সেজান এখন ডিপ্রেসড, শাফির এই টার্মে কোর্সে সি আছে, শাফির সাথে কথা বলতে গেলেই কোথথেকে জানি সি চলে আসে! পুরা ব্যাপারটা চরম ডিপ্রেসিং! ভার্সিটিতে আমি আরো তিনটা বছর কিভাবে কাটাবো, যদি প্রতিবছর তিনটা করে কোর্সে ফেইল করি?

How can I be lost,
If I’ve got nowhere to go?
Search for seas of gold
How come it’s got so cold?

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

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

তারপর আমি অনেক-অনেক দিন পর লিখতে বসলাম, কারণ অনেক অনেক দিন পর আমার সত্যি সত্যি লিখতে ইচ্ছে করছিল। বাইরে ঝড় আসছে, একটু আগে বাতাস অনেক ধুলো ঢুকিয়ে দিলো আমার কিবোর্ড, আর সাথে একটা হলুদ কামরাঙা গাছের পাতা.. এখন একটু একটু করে বৃষ্টির ছাট আসছে..

আমি গত সপ্তাহে একটা জোশ বই পড়ে শেষ করলাম – The Perks of Being a Wallflower – বইটা পড়ে আমার খুব দারুণ লাগলো – কারণ আমার মনে হচ্ছিল আমি বইটার সাথে নিজেকে রিলেট করতে পারছি। আমার মনে হচ্ছিল ছেলেটার সাথে আমার অনেক মিল। তবে ছেলেটা আমার চেয়ে অনেক বেশি সেন্টিমেন্টাল।

ছেলেটা বইয়ের একদম শেষে বলে
And we could all sit around and wonder and feel bad about each other and blame a lot of people for what they did or didn’t do or what they didn’t know. I don’t know. I guess there could always be someone to blame. … And God for not stopping all this and things that are much worse. And I did do that for a while, but then I just couldn’t anymore. Because it wasn’t going anywhere. Because it wasn’t the point.

…………………

Don’t get me wrong. I know what happened was important. And I needed to remember it. But it’s like when my doctor told me the story of these two brothers whose dad was a bad alcoholic. One brother grew up to be a successful carpenter who never drank. The other brother ended up being a drinker as bad as his dad was. When they asked the first brother why he didn’t drink, he said that after he saw what it did to his father, he could never bring himself to even try it. When they asked the other brother, he said that he guessed he learned how to drink on his father’s knee. So, I guess we are who we are for a lot of reasons. And maybe we’ll never know most of them. But even if we don’t have the power to choose where we come from, we can still choose where we go from there. We can still do things. And we can try to feel okay about them.

I think that if I ever have kids, and they are upset, I won’t tell them that people are starving in China or anything like that because it wouldn’t change the fact that they were upset. And even if somebody else has it much worse, that doesn’t really change the fact that you have what you have. Good and bad.

হুমম.. আমার আসলে পুরা বইটাই কপি করে দিতে ইচ্ছে করছে।

Later, they came by in Sam’s pickup truck. And we went to the Big Boy just like we always did. Sam told us about her life at school, which sounded very exciting. And I told her about my life in the hospital, which didn’t. And Patrick made jokes to keep everyone honest. After we left, we got in Sam’s pickup truck, and just like Sam promised, we drove to the tunnel.

About half a mile from the tunnel, Sam stopped the car, and I climbed in back. Patrick played the radio really loud so I could hear it, and as we were approaching the tunnel, I listened to the music and thought about all the things that people have said to me over the past year. I thought about Bill telling me I was special. And my sister saying she loved me. And my mom, too. And even my dad and brother when I was in the hospital. I thought about Patrick calling me his friend. And I thought about Sam telling me to do things. To really be there. And I just thought how great it was to have friends and a family.

As we went into the tunnel I didn’t hold up my arms like I was flying. I just let the wind rush over my face. And I started crying and smiling at the same time. Because I couldn’t help feeling just how much I loved my aunt Helen for buying me two presents. And how much I wanted the present I bought my mom for my birthday to be really special. And how much I wanted my sister and brother and Sam and Patrick and everyone else to be happy.

But mostly, I was crying because I was suddenly very aware of the fact that it was me standing up in that tunnel with the wind over my face. Not caring if I saw downtown. Not even thinking about it. Because I was standing in the tunnel. And I was really there. And that was enough to make me feel infinite.

এবং তারপর বইটা শেষ হয়ে যায় -

Tomorrow, I start my sophomore year of high school. And believe it or not, I’m really not that afraid of going. I’m not sure if I will have the time to write any more letters because I might be too busy trying to “participate.”

So, if this does end up being my last letter, please believe that things are good with me, and even when they’re not, they will be soon enough.
And I will believe the same about you.
Love always,
Charlie

THE END

http://www.somewhereinblog.net/blog/smilitudeblog

15 September 2010 0 Comments

মাহবুব সুমনের লেখা প্রোগ্রামিং কনটেস্টের টিউটোরিয়াল

  1. Overview of Programming Contest Practice in Bangladesh বাংলাদেশের প্রোগ্রামিং কনটেস্টের হালচাল
  2. Guide on How to Produce Good Problem Set টম ভেরহফের গাইড থেকে
  3. Tutorial on Valladolid Problem 10430
  4. Tutorial on Valladolid Problem 100
  5. Tutorial on Tree Related Problems

এছাড়া উদভ্রান্ত পথিক নামে তাঁর কিছু প্রবলেম ভ্যালাদোলিদ সাইটে (May Day Contest, Brightness of Brain Contest) রয়েছে। ভবিষ্যতের প্রবলেম সেটারদের এইগুলো খুব কাজে লাগবে। লেখাগুলো দেখতে চাইলে suttom ফন্ট লাগবে।