ছোটদের প্রোগ্রামিং শেখা এখন আগের চেয়েও সহজ। কারণ দ্বিমিক প্রকাশনী থেকে বের হয়েছে তামিম শাহরিয়ার সুবিন-এর "পাইথন দিয়ে প্রোগ্রামিং শেখা"! বিস্তারিত জানতে এখানে ক্লিক করুন

রান রেট

সমস্যাটি দিয়েছেন তানভীরুল ইসলাম, পিএইচডি শিক্ষার্থী, ন্যাশনাল ইউনিভার্সিটি অব সিঙ্গাপুর।

তুমি গেছ ক্রিকেট খেলা দেখতে। হঠাৎ খেয়াল করলে ইলেকট্রনিক স্কোরবোর্ডে আর সব সব ঠিক দেখালেও থাকলেও রানরেট ভুল দেখাচ্ছে। ব্যাপারটা ওদের বলতে গিয়ে জানলে যে ওরাও ভুলটা খেয়াল করেছে। কিন্তু অস্ট্রেলিয়া থেকে আমদানি করা স্কোরবোর্ডের প্রোগ্রাম ঠিক করতে সেই দেশের ইঞ্জিনিয়ার আনতে হবে, তার জন্য মন্ত্রনালয় থেকে অনুমতি, অনুদান, সই, সিল, ছাপ্পর, এটা, সেটা অনেক কিছু লাগবে বলে কাজটা হয়ে উঠছে না। কিন্তু তুমি বুঝতে পেরেছো ব্যাপারটা স্রেফ একটা প্রোগ্রামিং বাগ। দু লাইনের একটা কোড লিখেই ঠিক করে ফেলতে পারবে। সেটা বলতেই, কিছুটা ভেবে টেকনিশিয়ান লোকটা রাজি হয়ে গেল। শর্ত একটাই, তার বসকে কিছু বলা যাবে না। তুমিও তোমার প্রোগ্রামিং স্কিল সত্যিকার একটা কাজে লাগানোর সুযোগ পেয়ে তুমুল উৎসাহে কোড করতে শুরু করে দিলে।
খেলাটা হচ্ছে 50 ওভারের ওয়ানডে ম্যাচ। প্রতিবার যখন ডিস্প্লেতে ওভারপ্রতি বর্তমান রানের হার (current run rate) এবং জেতার জন্য কাঙ্ক্ষিত রানের হার (required run rate) দেখানো হয় তখন প্রতিপক্ষের করা মোট রান, ব্যাট্সম্যানদের বর্তমান রান এবং খেলার আর কত বল বাকি আছে তা জানা থাকে।
উল্লেখ্য, ক্রিকেটে 6 বলে 1 ওভার হয় এবং জিততে হলে প্রতিপক্ষের মোট রানের চেয়ে অন্তত 1 রান বেশি করতে হয়।

ইনপুট
প্রথম লাইনে একটি সংখ্যা থাকবে। ওই সংখ্যার মান যত, এর পরে ততগুলো লাইনে তিনটি করে সংখ্যা থাকবে। প্রথম সংখ্যাটি প্রতিপক্ষের মোট রান, দ্বিতীয় সংখ্যাটি ব্যাট্সম্যানদের বর্তমান রান, এবং তৃতীয় সংখ্যাটি খেলার আর কত বল বাকি আছে তা নির্দেশ করে।

আউটপুট
প্রতিলাইনের জন্য সেই লাইনের দেওয়া তথ্য থেকে হিসাব করে প্রথমে ওভারপ্রতি বর্তমান রানের হার এবং এরপর একটি স্পেস দিয়ে কাংক্ষিত রানের হার প্রিন্ট করতে হবে। প্রতিটি হার অবশ্যই দশমিকের পরে শুধু মাত্র দুই অঙ্ক পর্যন্ত দেখাতে হবে।


৫২টি প্রোগ্রামিং সমস্যা ও সমাধান বইতে এই সমস্যার সমাধান নিয়ে আলোচনা করা হয়েছে।

৮টি মন্তব্য:

  1. আমার সব কিছু কোড ঠিক থাকা সত্তেও wrong answer দেখাচ্ছে। আমি কয়েকটা Compiler এ রান করে দেখলাম কাজ করে। But, এখানে Submit করলে wrong answer আসতেছে। আমি Execution file টা শেয়ার করলাম (Not source code) দেখে নিতে পারেন >>> https://www.dropbox.com/s/as83hffphaiussa/Run%20Rate.zip

    উত্তরমুছুন
    উত্তরগুলি
    1. ভাইয়া, কোডটা E mail করে দেয়া যায়?
      Dropbox Link টা কাজ করছে না।
      এইমাত্র Solve করলাম তো!

      মুছুন
  2. import static java.lang.System.*;
    import java.util.*;
    public class ScoreBoardRunRate
    {
    public static void main (String args [])
    {
    Scanner sc = new Scanner (in);
    out.println("Enter the number of lines");
    int n = sc.nextInt();

    float matrixA [][] = new float [3][n];
    for (int c = 0;c < n;c++)
    {
    for (int i = 0;i < 3;i++)
    {
    out.println("Enter the number of "+(i+1)+" no colomn of "+(c+1)+" no row");
    matrixA [i][c] = sc.nextFloat();
    }
    float currentRunRate = matrixA [1][c]/(50-(matrixA[2][c])/6);
    float requiredRunRate = ((matrixA [0][c]+1)-matrixA [1][c])/(matrixA [2][c]/6);
    out.println(currentRunRate+" "+requiredRunRate);
    }
    }
    }

    উত্তরমুছুন
  3. আগের কোড টা দিলে নিচের ইরর টা আসে ভাইয়া।দয়া করে রিপ্লাই দেন।
    Main.java:3: class ScoreBoardRunRate is public, should be declared in a file named ScoreBoardRunRate.java
    public class ScoreBoardRunRate
    আমি কম্পাইল করে দেখছি।সব ঠিক আসে তবুও এমন আস্তেসে।

    উত্তরমুছুন
  4. একদম সিম্পলি কোড লিখলাম।তারপরেও টাইম লিমিড এক্সিড দেখাচ্ছে।এক্সিকিউশন টাইম কিভাবে রিডিউস করবো??

    উত্তরমুছুন

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