Showing posts with label মজার প্রোগ্রামিং সমস্যা. Show all posts
Showing posts with label মজার প্রোগ্রামিং সমস্যা. Show all posts

প্রোজেক্ট ইউলার সমস্যা ০৯ (Pythagorean Triples)

প্রবলেমঃ A Pythagorean triplet is a set of three natural numbers, a < b < c, for which,
a2 + b2 = c2
For example, 32 + 42 = 9 + 16 = 25 = 52.
There exists exactly one Pythagorean triplet for which a + b + c = 1000.
Find the product abc.


সমাধানঃ সমস্যাটি সমাধান করার আগে, Pythagorean Triples নিয়ে বিস্তারিত এই লেখাটি পড়ে নিতে পারেন 





Projecteuler.net সাইটে আপনার সমাধান সঠিক হলে আপনি সমাধানের একটি উপর বিস্তারিত অ্যালগরিদম সহ একটি pdf file পাবেন যেখানে সমস্যা সমাধানের জন্য কি থিওরি ব্যাবহার করতে হবে সব বিস্তারিত ব্যাখ্যা করা আছে। তবে সমাধান না করা পর্যন্ত আপনি pdf file টি পাবেন না। নিচে ফাইলটির ডাউনলোড লিংক দেওয়া আছে ডাউনলোড করে নিতে পারেন


প্রোজেক্ট এউলার প্রবলেম নাম্বার 5


সমস্যাঃ ২৫২০ সবচেয়ে ছোট সংখ্যা যেটি থেকে ১০ সব গুলো সংখ্যা দ্বারা নিঃশেষে বিভাজ্য। সবচেয়ে ছোট  positive integer নাম্বার বের করতে হবে যেটি -২০ সব গুলো সংখ্যা দ্বারা নিঃশেষে বিভাজ্য হবে। 



যদি সংখ্যাটি 11-20 এই সব গুলো সংখ্যা দ্বারা নিঃশেষে বিভাজ্য হয় তাহলে সংখ্যাটি অবশ্যই 1-10 সংখ্যা গুলো দ্বারা বিভাজ্য হবে।কোডটি efficient না Run time বেশি নেয়, চেষ্টা করুন একে efficient করার।

Euler problem #03: 600851475143 এর সর্বচ্চ প্রাইম factor (largest prime factor)

সমাধানঃ ২৪ এর ফ্যাক্টর 1,2,3,4,6,8,12,24 ,প্রাইম ফ্যাক্টর হবে 2,3 এবং largest prime factor হবে 3



এখানে long long ব্যাবহার করার কারন হচ্ছে 60085147143 int এর Range কে overflow করে ফেলবে। আমরা জানি int এর Range হচ্ছে 2^32 মানে ০ থেকে 4294967295 যা 600851475143 থেকে অনেক কম long long modifier int এর Range কে 16 বিট,16 বিট করে বাড়াবে, তখন number এর Range হবে 2^48। long int এর বা int এর range সাধারণত 32 bit ধরা হয়।
(long long int number আর long long number একই কথা) 

প্রোগ্রামিং দক্ষতা বাড়িয়ে নেয়ার কয়েকটি ওয়েবসাইট




Intermediate , Beginner, Absolute Beginner, expert লেভেলের বিভিন্ন প্রোগ্রামিং সমস্যা এখানে আছে।নতুনদের  জন্য খুব ভালো জায়গা,আখানে কিছু প্রোগ্রামিং সমস্যার সমাধান ও ব্যাখ্যা দেওয়া আছে যেগুলো নতুন কোডারদের জন্য খুব সহায়ক।সাইটের নিজস্ব ফোরাম আছে যেখানে কোন সমস্যা নিয়ে আলোচনা করা যায়,টপ প্রোগ্রামারদের সাথে পরিচয় হয়া যায়।একটা কথা না বললেই নয়,অন্যান্য প্রোগ্রামারদের সমাধান করা সমস্যার কোড দেখতে দেয় যেটা অন্য সাইট গুলো দেয় না।এই ওয়েবসাইট নিয়মিত প্রোগ্রামিং contest এর আয়োজন করে। 



বাংলাদেশী প্রোগ্রামারদের মধ্যে খুব জনপ্রিয় একটা সাইট,অনেক সমস্যার সমাধান দেওয়া আছে অনুশীলনের জন্য।প্রোগ্রামিং যারা মোটামুটি পারে,আমি তাদের বলবো এই ওয়েবসাইটটিতে নিয়মিত অনুশীলন করতে।uva Ranking এ বর্তমানে বাংলাদেশী প্রোগ্রামারদের অবস্থান খুব ভালো,টপ 3 বা 5 এ দুই-একজন বাংলাদেশী থাকবেই। 



গনিতবিদ Leonhard Euler এর কথা কে না জানে, euler মাত্র ১৮ বছর বয়সে French-Academy of Science এ তার গবেষণাপত্র জমা দেন,তার ৫৩০টিরও বেশি বই এবং papers প্রকাশিত হয়।ত্রিকনমিতির exponential function তারই গবেশনার ফল।ইউলার সম্পর্কে একটা কথা প্রচলিত আছে, “Euler calculated as long as breathed” .
যাই হোক, এই ওয়েবসাইটের সমস্যা গুলোর অধিকাংশই গাণিতিক যুক্তি দিয়ে সমাধান করতে হয়।সমাধান করে পুরো প্রোগ্রাম জমা দিতে হয় না শুধু উত্তর জমা দিলেই হয়, খুবই সহজ ব্যাবহার করা যে কেউ পারবে। 
আমি ব্যক্তিগত ভাবে এই ওয়েবসাইটের একজন একনিষ্ঠ ভক্ত।



এই ওয়েবসাইট নিয়ে কিছু বলবো না সাইটে গেলেই বুজতে পারবেন।


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




এই ওয়েবসাইটের কথা না বললে খুব অন্যায় হবে।ওয়েবসাইটটি চালু করেন একজন বাংলাদেশী “জানই-আলম”,তিনি ঢাকা বিশ্ববিদ্যালয় থেকে কম্পিউটার ইঞ্জিনিয়ারিং বিভাগ থেকে পাশ করে বর্তমানে Google এ কর্মরত আছেন।এই ওয়েবসাইটটিতে খুব সহজ ভাষায় সমস্যা গুলো দেয়া আছে, নতুন প্রোগ্রামারদের জন্য একটা আদর্শ জায়গা।এই সাইটের একটি চমৎকার ফোরাম আছে। শুধু এই সাইটে নয় প্রত্যেকটি online judge সাইটেরই একটা করে ফোরাম থাকে, যেখানে বড় বড় প্রোগ্রামারদের সাথে কথা বলা যায়,তারা কিভাবে প্র্যাকটিস করে,কম সময়ে সমস্যা সমাধানের বিভিন্ন টিপস ইত্যাদি বিষয় গুলো জানা যায়, যেগুলো প্রোগ্রামিং এ দক্ষ হয়ে ওঠার পক্ষে সহায়ক।



উপরের সবগুলো ওয়েবসাইটের থেকে আমি এই সাইটকে এগিয়ে রাখবো।কেন রাখবো বুঝে নেন।






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

সব শেষে এই ফেসবুক পেজে আপনাদের সমস্যার কথা বলতে পারেন আশা করি উত্তর পাবেন।

পোস্টটি ভালো লাগলে কমেন্ট করতে ভুলবেন না।


 

প্রাইম নাম্বার কি? সি প্রোগ্রামে বিভিন্নভাবে প্রাইম নাম্বার বের করা

প্রাইম নাম্বার কি? এটা মনে হয় প্রায় সবাই জানেন তাই এইটা নিয়া আর বেহুদা প্যাঁচাল না পারি আমরা সমস্যায় চলে যাই।

১ম সমসাঃ আমাদের একটি প্রোগ্রাম লিখতে হবে যেটি ইনপুট নিয়ে বলে দিতে পারবে ইনপুট দেওয়া সংখ্যাটি প্রাইম কিনা।

এই সমস্যাটি বিভিন্ন লজিকে সমাধান করা যায়, আমরা সবচেয়ে সহজ পদ্ধতি সমাধান করবো। প্রাইম নাম্বারের সংজ্ঞা থেকে আমারা জানি, প্রাইম নাম্বার মাত্র দুটি সংখ্যা দ্বারা নিঃশেষে বিভাজ্য হবে( একটি ১ অন্যটি ঐ সংখ্যা নিজে)


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







উপরের প্রোগ্রামটি না বোঝার কিছু নাই।
আমারা এখানে for loop i এর মান 1, i, n থেকে ছোট বা সমান এবংI এর মান একএক করে বাড়বে। প্রতিবার loop repeat হওয়ার সময় if এর মধ্যকার শর্ত চেক হবেশর্তে বলা আছে যখন n এবংI এর ভাগশেষ শুন্য হবে তখন count এর মান এক বাড়বে।ভাগশেষ শূন্য হবে যখন n, i দ্বারা নিঃশেষে বিভাজ্য হবে।এভাবে চললে দেখা যাবে count এর মান 2 হবে যদি input দেওয়া নাম্বারটি প্রাইম হয় আর যদি না হয় নাম্বার টি 
প্রাইম নয়।

প্রোগ্রামটি অন্যভাবে করা যায় যেমন
সিভ অফ এন্টারস্থেনিজ থিওরি "প্রয়োগ করে প্রাইম নাম্বার বের করা




প্রোগ্রামিং সমস্যা বাংলায় (এউলার সমস্যা ০১)



সমস্যাঃ 10 থেকে ছোট সকল স্বাভাবিক সংখ্যার যোগফল বের করতে হবে যেগুলো 3 অথবা 5 এর গুনিতক।( গুনিতক কি এইটা আবার জিগায়েন না)


সমাধানঃ 10 থেকে ছোট সকল স্বাভাবিক সংখ্যা হচ্ছে 1,2,3,4,5,6,7,8,9 এদের মধ্যে 3 বা 5 এর গুণিতক হচ্ছে 3,5,6, এবং 9এদের যোগফল 23।  

লজিক তো বুঝলেন এইবার কোড লিখে ফেলেন,নিজে নিজে চেষ্টা করেন, চিন্তা করেন প্রোগ্রামারদের কোন সমস্যা নিয়া রাত-দিন একাকার করে ফেলা একটা বড় গুন, তারপরও না পারলে নিচের লিঙ্কে একটা ক্লিক করেন।

সমাধান

euler problem overview (Download)


Euler problem #03: 600851475143 এর সর্বচ্চ প্রাইম factor (largest prime factor)