All posts filed under “blog

comment 0

স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরী – ম্যাপ

এই মুহুর্তে আমরা একটা সাইটে ইউজার একাউন্ট রেজিস্টার সিস্টেম নিয়ে কাজ করতে চাচ্ছি। সিস্টেমের বেসিক কাজটা খুবই সোজা। প্রত্যেকবার একজন ইউজার রেজিস্টার করতে চাইলে, আমরা সিস্টেম ডাটাবেজ চেক করে দেখবো এ নামে কোন ইউজার আছে কিনা। যদি না থাকে, তাহলে ওই ইউজার রেজিস্টার হবেন এবং আমরা OK মেসেজ শো করবো। যদি নামটি আগেই আমাদের ডাটাবেজে থাকে, মানে এই নামে আগেই কেউ একজন রেজিস্টার করে ফেলেন সেক্ষেত্রে নতুন নামের ফরম্যাট হবে এরকম- ইন্টিজার ভেল্যু (1, 2, 3… ) ওই নামের শেষে যোগ হবে এবং ইউজারকে এই নামে রেজিস্ট্রেশন করার জন্য রিকমেন্ডেশন পাঠাবো। ধরা যাক, karim রেজিস্টেশন রিকেউয়েস্ট পাঠিয়েছে, এখন করিম নামে…

comments 4

Quora – বর্তমান সময়ের সেরা প্রশ্ন-উত্তর সাইট

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

comment 0

এসিএম আইসিপিসি ২০১৬

বিশ্বের সবচেয়ে মর্যাদাপূর্ণ প্রোগ্রামিং প্রতিযোগিতা এসিএম আইসিপিসির চূড়ান্ত পর্বের মূল প্রতিযোগিতা আজ অনুষ্ঠিত হলো। এবারের আয়োজন হয়েছে থাইল্যান্ডের পুকেট শহরে। এটি ছিলো এসিএম আইসিপির ৪০ তম আসর। আয়োজক বিশ্ববিদ্যালয় থাইল্যান্ডের প্রিন্স অব সংকলা ইউনিভার্সিটি। চূড়ান্ত পর্বের আগে লক্ষ লক্ষ প্রোগ্রামারদের মাঝ থেকে সেরাদের বাছাই করার উদ্দেশ্যে বিশ্বের নানা রিজিওনজুড়ে আয়োজিত হয়েছিল রিজিওনাল প্রোগ্রামিং প্রতিযোগিতা। ১০২ টি দেশের মোট ২৭৩৬ বিশ্ববিদ্যালয়ের প্রায় ৪০০০০ প্রতিযোগী রিজিওনাল প্রতিযোগিতায় অংশগ্রহণ করেছিল। সেখান থেকে বাছাই প্রতিযোগিতার ধাপ পার হয়ে বিভিন্ন দেশের মোট ১২৮ টি দল ওয়ার্ল্ড ফাইনাল ২০১৬ মানে চূড়ান্ত পর্বে লড়াই করার জন্য যোগ্যতা অর্জন করে। বাংলাদেশ ঢাকা রিজিওনের অন্তর্ভুক্ত এবং এই রিজিওন থেকে এবছর ০৩ টি দল ওয়ার্ল্ড ফাইনালে যাওয়ার যোগ্যতা অর্জন করে। এবারের আইসিপি নিয়ে বাংলাদেশে উচ্ছ্বাস আর উদ্দীপনা ছিলো অন্যমাত্রায়।

comments 2

কম্পিটিটিভ প্রোগ্রামিং টিউটোরিয়াল লিঙ্কবাকসো

প্রোগ্রামিং সিলেবাস

ইন্সপায়ারিং অর স্ট্রাটেজিক

ডাটা স্ট্রাকচার

  • স্ট্যাক ডাটা স্ট্রাকচারhttps://goo.gl/YHKFZo (কন্টেস্ট প্রোগ্রামার তানভির হাসানের লেখা । অসাধারণ ।)
  • কিউ ডাটা স্ট্রাকচারhttps://goo.gl/DLT4gu (তানভির হাসানের লেখা ।)
  • লিঙ্কড লিস্ট ডাটা স্ট্রাকচার – https://goo.gl/apWYAt (তানভির হাসানের লেখা ।)
  • সেগমেন্ট ট্রি-১ – http://goo.gl/dTKLFk (শাফায়েত ভাইয়ের লেখা । শাফায়েত ভাই হিউজ পপুলার ব্লগ রাইটার ফ্রম বাংলাদেশ)

ডাইনামিক প্রোগ্রামিং

  • প্রিলিমিনারি ডাইনামিক প্রোগ্রামিং  http://goo.gl/lqtS9n  ( চাইনিজ ভাষায় লেখা । গুগল ক্রোম ব্যবহার করে ট্রান্সলেট করে নিতে হবে।)
  • How to come up with solutions for DP problems – https://goo.gl/Yv5JkS (Anwser from Quora by Michal Danilák)
  • Dynamic Programming Youtube Tutorial – https://goo.gl/QiurTN ( Youtuber speaks in Arabian. But english subtitles available. Awesome Links has been added with video. So check it out.)
  • How can I effectively practice Dynamic Programming to improve my skills – https://goo.gl/0VKz91
  • Awesome Youtube Video Tutorial by Tushar Royhttps://goo.gl/DrwFz7
  • Dynamic Programming (starting approach) – https://goo.gl/CzjGkO

নাম্বার থিওরী

  • এক্সটেন্ডেড ইউক্লিডীয়ান এলগোরিদম – http://goo.gl/lxvhmy (জুবায়ের হাসান লিখেছেন)
  • Chinese Remainder Theorem – http://goo.gl/ayvTkh (আবু আসিফের লেখা ।)
  • ম্যাট্রিক্স এক্সপোনেনসিয়েশন – http://goo.gl/4rTMh9 (ঢাবি শিক্ষক আনা ফারিয়া লিখেছেন।)
  • Practice Recursions – http://goo.gl/1m1l9b
  • Segmented Sieve of Eratosthenes – http://goo.gl/vdwd0o
  • Segmented Sieve – http://goo.gl/e4c1tS
  • ইনভার্স মড – https://goo.gl/WkUN6N
  • ইউলার ফাই ফাংশন – http://goo.gl/c9nct5
  • ন্যূনতম সংখ্যাতত্ত্ব – http://goo.gl/pznOJV
  • Pollard Rho Brent Integer Factorization – https://goo.gl/VQUkYu
  • Miller Rabin Primality Testhttps://goo.gl/xlbiay
  • পূর্ণ সংখ্যার প্রাইম ফ্যাক্টরাইজেশন – http://goo.gl/YBqDcO
  • প্রাইমারিলিটি টেস্টিং (সিভ অব এরাটস্থেনিজ) – http://goo.gl/DNH82v

কোড লাইব্রেরী

  • কন্টেস্ট কোড লাইব্রেরীhttps://goo.gl/dJ6Hpo ( জুবায়ের হাসানের কন্টেস্ট রিপো, মিলিওন ডলার দামি )
  • স্ট্যান্ডার্ড টেম্প্লেট লাইব্রেরী – https://goo.gl/7QJlCH ( ফাহিম ভাইয়ের লেখা, অবশ্য পাঠ্য)
  • গিট পরিচিতি – http://goo.gl/q31tqJ  (জনপ্রিয় প্রোগ্রামার হাসিন হায়দায়ের লেখা)
  • Lightweight Set of Boolean ওরফে Bitmaskhttp://goo.gl/1zDZpm (রুয়েট শিক্ষার্থী আবু আসিফের লেখা ।)
comments 2

সিনট্যাক্স টু কম্পিটিটিভ প্রোগ্রামিং জার্নি

কম্পিউটার সায়েন্সের শিক্ষার্থীদের এক দুটো সেমিস্টার যাওয়ার পর খুবই কমন একটি প্রশ্ন হলো, আমি সি ল্যাঙ্গুয়েজ পারি অথবা আমি পাইথন পারি – এখন কি করবো, ভাইয়া ? এই কথাটি শুনে সিনিয়র ভাইটি একটু মৃদু হেসে উত্তর দেন, ১০ বছরেও তো একটা ল্যাঙ্গুয়েজ পুরো শিখতে পারবা না এখনি সব পারো ! আসলে তুমি যেটা পারো সেটা হলো ব্যাসিক সিনট্যাক্স । কিভাবে ইনপুট আউটপুট নিয়ে কাজ করতে হয়, ডাটা টাইপ, ভেরিয়েবল, অপারেটর, কন্ডিশনাল স্টেটমেন্ট – if else, switch, কন্ট্রোল স্টেটমেন্ট – for loop, while loop এসব বেসিক কিছু ব্যাপার শিখে ফেলাটা খুব কঠিন কিছু না । তামিম শাহরিয়রের সুবিনের বই আর টন টন অনলাইন টিউটরিয়ালের ভিড়ে ক্লাস সিক্স অথবা সেভেনের ছেলেপেলেও এখন এসব পারে ।

comment 1

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।

comment 0

পুর্ণ সংখ্যার সেট বিট নির্ণয়

কোন একটি সংখ্যাকে বাইনারিতে প্রকাশ করলে সেখানে শুধুমাত্র ০ অথবা ১ থাকে । একটি বাইনারি সংখ্যায় কতগুলো ১ আছে, তার মানই সংখ্যাটির সেট বিট । সেট বিট কাউন্ট করার বেশ কিছু উপায় আছে । এর মধ্যে দুটো উপায় নিয়ে আমি আলোচনা করবো ।

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

comment 0

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.

comment 0

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.