Sunday, November 5, 2017

BUBT Intra University Programming Contest Summer 2017 [Junior] Editorial

যতদিন কম্পিটিটিভ প্রোগ্রামিং করেছি (কেউ পজিশন জিজ্ঞেস না করলে ভালো হয় :( ), দেখেছি কনটেস্ট শেষে তার এডিটরিয়াল পাওয়া যাচ্ছে। এডিটরিয়াল হলো কনটেস্ট এর প্রবলেমের বিষয়ে শর্টকাট আলোচনা, যেখানে সরাসরি কোন সলুশন/কোড থাকেনা থাকে সলভিংএর কিছু টেকনিকস। তো আমারও স্বপ্ন ছিল একদিন টিউটোরিয়াল লিখব। যদিও নিম্মোক্ত লেখাকে কোনভাবে টিউটোরিয়াল বলা যায় কি না আমার জানা নেই। সেটা বিজ্ঞজনেরা বিবেচনা করবেন। আমি আমার স্বপ্ন পূরণ করি। হা হা।

  1. Easy Problem 4
Problem Setter: Md. Saifur Rahman, Assistant Professor, Dept. of CSE
এখানে মুলত প্রদত্ত যে কোন দুটি সংখ্যার পার্থক্য জানতে চাওয়া হয়েছে। যেটা একটি সংখ্যা থেকে আরেকটি সংখ্যা বিয়োগ করলেই পাওয়া যায়। কিন্তু একটা সমস্যা হলো পার্থক্য সবসময় ধণাত্মক, কিন্তু বিয়োগফল ঋণাত্মকও হতে পারে। তো সহজ হিসাব হলো পার্থক্য জানতে হলে সবসময় বড় সংখ্যা থেকে ছোট সংখ্যা বিয়োগ দিতে হবে, তাহলেই আর ঋণাত্মক মান আসবে না। জগতে সবই if/else  এর খেলা। গোপন খবর:  math.h এর একটা ফাংশন আছে abs(x,y)।

  1. The Unsolvable Math
Problem Setter: Md. Joshim Uddin, Dept. of CSE
যারা পিলো পাস বা বালিশ খেলা খেলেছে এটা তাদের পারার কথা। পিলো পাসের সাথে এখানের পার্থক্য হলো পিলো পাসে পিলো ছুটে যাওয়া পর্যন্ত খেলা হয়, এখানে কয়বার খেলা হবে সেটা বলে দেয়া হয়েছে এবং জানতে চাওয়া হয়েছে খেলা শেষে কার কাছে থাকবে বল। ধরা যাক দুজন প্লেয়ার পিলো পাস খেলবে। ইনিশিয়ালি পিলো কার কাছে আছে এবং কয় রাউন্ড খেলা হবে বলে দেয়া হয়েছে। ইনপুট সেট দেখে বোঝা যাচ্ছে যে লিনিয়ারলি একটা করে চেক করেও সলুশন করা যায় কারন ইনপুট সেট ছোট। এই জগতে সবই ভাগশেষ অর্থাৎ রিমাইন্ডারের খেলা।

  1. Solve the Equation 1
Problem setter: Tushar Roy , Department of CSE, 23rd intake

সহজ বিষয়, একটা ইকুয়েশনের রেজাল্ট জানতে চাওয়া হয়েছে। সমস্যা হলো ডাটা লিমিট।
x = n^2 - (n-1)^2.  এখানে n হতে পারে 10^12 পর্যন্ত। তাহলে n^2 হতে পারে 10^12 * 10^12 অর্থাৎ 10^24 পর্যন্ত যেটার ভ্যালু 25 ডিজিট। দুর্ভাগ্যক্রমে long long এর ভ্যালুও সর্বোচ্ছ 19 ডিজিট। সুতরাং ইকুয়েশনকে সলভ করে অপটিমাল রেজাল্ট হিসেবে যে ইকুয়েশন পাওয়া যায় সেটা ব্যবহার করতে হবে।

  1. Solve the Equation 1
Problem setter: Tushar Roy , Department of CSE, 23rd intake

হাইস্কুলে করা ঐকিক নিয়ম। সবই যোগ বিয়োগ গুণ ভাগের খেলা। 4 স্কেলে SGPA বের করে ঐকিক নিয়মে 5 স্কেলে নিতে হবে। আর কিছু না।

  1. Digits 2
Problem setter: Md. Ashraful Islam, Lecturer, Dept. of CSE
অনেক ছোটবেলার একক দশক শতক বের করার পদ্ধতি। একটি সংখ্যার সর্বশেষ ডিজিট নিতে হবে। পিছন থেকে প্রথম ডিজিট একক (unit digit), তারপর দশক (tens digit) তারপর শতক (hundreds digit)। যেকোন সংখ্যাকে 10 দিয়ে ভাগ করলে সেটার ভাগশেষ বিভাজ্য সংখ্যার শেষ ডিজিট যেমন 123%10=3(শেষ ডিজিট)। এই পদ্ধতিতেও সলুশন করা যায়। আবার প্রদত্ত সংখ্যাকে স্ট্রিং হিসেবে নিয়েও করা যায়।

  1. Bubble Sort!!!
Problem setter: Abu Obaida Opu, Department of CSE

এই প্রবলেমের স্টেটমেন্ট আমি বুঝিনাই। এটা আমার ইংরেজির সুদক্ষতার (!) কারনেই হোক আর অ্যানালিটিকাল অ্যাবিলিটির অদক্ষতার কারনেই হোক। আমি দু:খিত। :(

  1. Finding the radius of circle
Problem setter: Md. Mukib Hossen, Department of CSE

এটা প্লেইন জিওমেট্রির প্রবলেম। এই এক্সটারনালি টাচড সার্কেলের প্রবলেমকে Tangent Circles অথবা Apollonius' problem বলে। আমি জিওমেট্রি পারিনা, সুতরাং এটা থেকে দেখা যেতে পারে।

  1. Leap Year 8
Problem setter: Rayhan Ahmed , Department of CSE

এটা ইম্পলিমেন্টেশন প্রবলেম। লজিকও স্টেটমেন্টে দেওয়া আছে। শুধু সমস্যা ডাটা ক্যাপাসিটি। 100 ডিজিট এমনকি long long এ ও আসবে না। স্ট্রিং এ ইনপুট নিতে হবে। তাহলে ভাগ যায় কি না দেখবো কেমনে? প্রত্যেক সংখ্যার ই নি:শেষে বিভাজ্য সংখ্যার একটা প্যটার্ণ থাকে। যেমন 5 দিয়ে বিভাজ্য সংখ্যার শেষে 5 অথবা 0 থাকবে। প্যাটার্ণ খুজে বের করলেই কেল্লা ফতে।

  1. Modified 3n+1
Problem setter: Murad Al Wajed, Department of CSE
ইম্পলিমেন্টেশন প্রবলেম। রিকার্সিভ ওয়ে বা ফর লুপ দিয়ে স্টিং ম্যানিপুলেট করে করা যায়। এখানে  ‍3a হলে ‍aaa যোগ হবে স্ট্রিং এ,  +b হলে স্ট্রিং এ b যোগ হবে। স্ট্রিং ম্যানিপুলেটের জন্য C++ STL এর string লাইব্রেরির কাজগুলা দেখা যেতে পারে।


আমাকে কোনভাবেই ভালো প্রোগ্রামার বলা যায়না। সুতরাং আমার ভুল থাকতে পারে। নোটিফাই করলে ভুল ঠিক করে নেয়া হবে। ধন্যবাদ। :)

Md. Rasedur Rahman Roxy
BSc in CSE
Bangladesh University of Business & Technology

No comments:

Post a Comment