Category: computation
- Quora – বর্তমান সময়ের সেরা প্রশ্ন-উত্তর সাইট ()
আমি যখন কম্পিউটার প্রোগ্রামিং নিয়ে পড়াশুনা শুরু করি বিশেষ করে কম্পিটিটিভ প্রোগ্রামিং নিয়ে কাজ করার সময় নানা প্রশ্নের উত্তর গুগলে সার্চ করতে হত। এখনো প্রতিদিন গুগল করতে হয়। তো গুগল করার সময় আমি মাঝে মাঝেই Quora সাইটের লিঙ্ক পেতাম। সেসব আর্টিকেলগুলো পড়ে আমার বেশ ভালো লেগেছিলো। সেই থেকেই আমার নিয়মিত Quora ব্যবহার শুরু। Quora আমার জন্য একটা গাইড, আমার সাইকোলজিক্যাল মেন্টর, মাই ইনটেকচুয়াল গ্যামিং সাইট। Quora পড়ে আমি শুরু থেকেই প্রচুর মজা পেয়েছি। এখানে যারা উত্তর লিখেন, আলাপ আলোচনা করেন – এদের বর্ণনার যে ধরণ সেটি আমাকে প্রতিদিন মুগ্ধ করে। আমার কখনো Quora কে মনে হয়েছে ফেসবুক, কখনো গুগল, কখনো ইয়াহু। Quora একাই সবকিছু!
- এসিএম আইসিপিসি ২০১৬ ()
বিশ্বের সবচেয়ে মর্যাদাপূর্ণ প্রোগ্রামিং প্রতিযোগিতা এসিএম আইসিপিসির চূড়ান্ত পর্বের মূল প্রতিযোগিতা আজ অনুষ্ঠিত হলো। এবারের আয়োজন হয়েছে থাইল্যান্ডের পুকেট শহরে। এটি ছিলো এসিএম আইসিপির ৪০ তম আসর। আয়োজক বিশ্ববিদ্যালয় থাইল্যান্ডের প্রিন্স অব সংকলা ইউনিভার্সিটি। চূড়ান্ত পর্বের আগে লক্ষ লক্ষ প্রোগ্রামারদের মাঝ থেকে সেরাদের বাছাই করার উদ্দেশ্যে বিশ্বের নানা রিজিওনজুড়ে আয়োজিত হয়েছিল রিজিওনাল প্রোগ্রামিং প্রতিযোগিতা। ১০২ টি দেশের মোট ২৭৩৬ বিশ্ববিদ্যালয়ের প্রায় ৪০০০০ প্রতিযোগী রিজিওনাল প্রতিযোগিতায় অংশগ্রহণ করেছিল। সেখান থেকে বাছাই প্রতিযোগিতার ধাপ পার হয়ে বিভিন্ন দেশের মোট ১২৮ টি দল ওয়ার্ল্ড ফাইনাল ২০১৬ মানে চূড়ান্ত পর্বে লড়াই করার জন্য যোগ্যতা অর্জন করে। বাংলাদেশ ঢাকা রিজিওনের অন্তর্ভুক্ত এবং এই রিজিওন থেকে এবছর ০৩ টি দল ওয়ার্ল্ড ফাইনালে যাওয়ার যোগ্যতা অর্জন করে। এবারের আইসিপি নিয়ে বাংলাদেশে উচ্ছ্বাস আর উদ্দীপনা ছিলো অন্যমাত্রায়।
- কম্পিটিটিভ প্রোগ্রামিং টিউটোরিয়াল লিঙ্কবাকসো ()
প্রোগ্রামিং সিলেবাস
কন্টেস্ট প্রোগ্রামিং সিলেবাস – https://goo.gl/0gRHkZ
এলগরিদম লিস্ট – https://goo.gl/qQ7WVG
Topic wise Coding Resources – http://goo.gl/jJQXHN - সিনট্যাক্স টু কম্পিটিটিভ প্রোগ্রামিং জার্নি ()
কম্পিউটার সায়েন্সের শিক্ষার্থীদের এক দুটো সেমিস্টার যাওয়ার পর খুবই কমন একটি প্রশ্ন হলো, আমি সি ল্যাঙ্গুয়েজ পারি অথবা আমি পাইথন পারি – এখন কি করবো, ভাইয়া ? এই কথাটি শুনে সিনিয়র ভাইটি একটু মৃদু হেসে উত্তর দেন, ১০ বছরেও তো একটা ল্যাঙ্গুয়েজ পুরো শিখতে পারবা না এখনি সব পারো ! আসলে তুমি যেটা পারো সেটা হলো ব্যাসিক সিনট্যাক্স । কিভাবে ইনপুট আউটপুট নিয়ে কাজ করতে হয়, ডাটা টাইপ, ভেরিয়েবল, অপারেটর, কন্ডিশনাল স্টেটমেন্ট – if else, switch, কন্ট্রোল স্টেটমেন্ট – for loop, while loop এসব বেসিক কিছু ব্যাপার শিখে ফেলাটা খুব কঠিন কিছু না । তামিম শাহরিয়রের সুবিনের বই আর টন টন অনলাইন টিউটরিয়ালের ভিড়ে ক্লাস সিক্স অথবা সেভেনের ছেলেপেলেও এখন এসব পারে ।
- SPOJ Problem ADFRUITS ()
এই প্রবলেমটি একটি স্ট্রেইট ফরোয়ার্ড Shortest Common Subsequence প্রবলেম । ডিরেক্ট Shortest Common Subsequence Algorithm প্রয়োগ করে কিংবা Longest Common Subsequence কে কিছুটা মডিফিকেশন করে এটি সলভ করা সম্ভব । ডাইনামিক প্রোগ্রামিংয়ের খুবই জনপ্রিয় এবং ক্লাসিক্যাল দুটি এলগরিদম হলো LCS ও SCS Algorithm । LCS বা SCS Algorithm কিভাবে কাজ করে তুমি যদি না জেনে থাকো তাহলে নিচের লিঙ্ক থেকে শিখে নিতে পার । খুব সহজ ভাষায় LCS হলো দুটি স্ট্রিংয়ের মধ্যে সবচে longest subsequece টি. দুটি স্ট্রিংয়ের lcs একটির বেশীও হতে পারে । যেমন – eye, eyes স্ট্রিং দুটির longest subsequence হলো eye. উইকিতে Shortest Common Subsequence এর বর্ণনা করা হয়েছে এভাবে – a shortest common supersequence of strings x and y is a shortest string z such that both x and y are subsequences of z. যেমন – স্ট্রিং ananas ও banana এর SCS হলো bananas।
- পুর্ণ সংখ্যার সেট বিট নির্ণয় ()
কোন একটি সংখ্যাকে বাইনারিতে প্রকাশ করলে সেখানে শুধুমাত্র ০ অথবা ১ থাকে । একটি বাইনারি সংখ্যায় কতগুলো ১ আছে, তার মানই সংখ্যাটির সেট বিট । সেট বিট কাউন্ট করার বেশ কিছু উপায় আছে । এর মধ্যে দুটো উপায় নিয়ে আমি আলোচনা করবো ।
মেথড ০১ঃ (সিম্পল মেথড)
এটি খুবই সহজ একটি উপায় । একটি সংখ্যার সবগুলো বিট পর্যায়ক্রমে চেক করতে হবে । যদি নির্দিস্ট বিটটি সেট অবস্থায় থাকে । তাহলে সেট বিট কাউন্টারের মান ১ বাড়াতে হবে । কোন একটি বিট সাধারণত দুটো অবস্থায় থাকতে পারে – সেট অবস্থা আর ক্লিয়ার অবস্থা । যদি বিটটি ০ শূন্য তাহলে বলা হবে ক্লিয়ায় মোড আর ১ হলে বলা হবে সেট মোড । তুমি ডেসিম্যাল টু বাইনারি কনভার্সন জেনে থাকলে বিট চেক করা তোমার জন্য কোন কাজই না । কোন পূর্ণ সংখ্যাকে ২ দিয়ে ভাগ দিলে হয় ভাগশেষ ১ থাকবে না হয় ০ থাকবে । ২ দিয়ে বারবার ভাগ করেই বাইনারি টু ডেসিম্যাল কনভার্সন করা হয় । - Multiplication of Two Big Numbers (more than 100 digit) ()
First, you should read the code two times without comment.
I think, you will understand the algorithm. if not, then follow comments.
————————————-
here, we use primary school math logic. let two numbers 1133 333.
1133
333
———-
3399 ->3399 ….. res[0] = 9 - Graph Theory Algorithms ()
Why Graph Theory
Graph theory is an important topics in computer science algorithm arena. To be a good programmer you need to know couple of graph theory algorithms. Top sites like google, facebook or others, where searching is needed, you need to conduct with graph theory. Here, I just wrote code of different popular graph theory algorithms. If you want to know theoretical details or pseudo-code you may love to visit Shafayet Vai’s Blog . He explained graph theory in a very good way. I think, he is best tutorial maker in bengali language for algorithms. You should read CLRS book to know details.
- Data Structure and Algorithm Books you should read ()
Top 5 Data Structure and Algorithm Books I would like to recommend:
Introduction to Algorithms by Thomas H. Cormen – This is one of the best books on Computer Algorithms, it’s written by four authors, one of them is Thomas H. Cormen, whose another book Unlocked Algorithm is also the most recommended book to learn algorithms. This book is a lot more comprehensive and covers lots of different algorithm and advanced problem-solving technique e.g. greedy algorithms, dynamic programming, Amortized Analysis, along with elementary data structures like Stacks and Queues, Array and linked list, Hash tables, Tree, and Graph.
- Tricks on array index range query ()
ধরা যাক, আমাদের কাছে ara[5] সাইজের একটা এরে আছে । আগেই বলে রাখছি, এরে ইনডেক্স শুরু হবে 1 থেকে, 0 থেকে না। আমাদের এই এরেতে ৭ বার কুয়েরি করতে হবে [x, y] ইন্টার্ভালে । প্রতি কুয়েরিতে ওই ইন্টার্ভালের ইনডেক্সগুলোতে 2 যোগ করতে হবে । কুয়েরি শেষে পরিবর্তিত array প্রিন্ট করতে হবে ।
ara[5] = {2, 3, 7, 4, 10}; // array input
// 07 queries
1 5
2 4
5 5
2 5