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

টমি মিয়ার প্রোবাবিলিটি

সমস্যাটি পাঠিয়েছেন ইকরাম মাহমুদ ফাহিম (ইন্টারন্যাশনাল ইসলামিক ইউনিভার্সিটি, মালয়েশিয়া)।

টমি মিয়া প্রোবাবিলিটিতে (সম্ভাব্যতা) বিশ্বাস করে।

তো কেউই খুব অবাক হলো না যখন টমি মিয়া তার বড় ছেলেকে ইংলিশ মিডিয়াম স্কুলে ভর্তি করানোর জন্য প্রিপারেশন নেয়া শুরু করলো। এখন সমস্যা হচ্ছে, ভর্তি পরীক্ষায় ইংরেজি অনুবাদ করতে হবে। টমি মিয়ার ছেলে শব্দগুলোর ইংরেজি অনুবাদ জানে, কিন্তু সে ব্যাকরণ জানে না। এখন সমস্যা হচ্ছে ব্যাকরণ না মানলে ঠিক বাক্য গঠন হয় না। যেমন ধরো, 'তুমি ভাত খাও' এটা তুমি যদি ইংরেজিতে অনুবাদ করে লিখো, 'rice eat you' তাহলে কেউ ভাববে না তুমি কবি। সবাই ভাববে তুমি ব্যাকরণ জানো না, কিংবা ভাববে তুমি চাচ্ছো ভাত তোমাকে খেয়ে ফেলুক!

টমি মিয়া প্রোবাবিলিটিতে বিশ্বাস করে। তো প্রতিটা বাক্যের জন্য টমি মিয়া জানতে চায় তার বড় ছেলের সঠিক হবার প্রোবাবিলিটি কতো।


ব্যাখ্যা -
ছয়টা আলাদা ভাবে eat you rice কে সাজানো যায়

eat you rice
eat rice you
you eat rice
you rice eat
rice you eat
rice eat you

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

৯টি মন্তব্য:

  1. ভাইয়া দ্বিতীয় উদাহরণের আউটপুটটা কি ঠিক আছে ।
    চার শব্দ বিশিষ্ট বাক্যকে তো ২৪ ভাবে সাজানো । নিচের কোডটির আউটপুট
    দেখুন ঃ

    #include
    int main()
    {
    int x=0,a, b, c,d ,e,f;
    char ar[5][10]={{""}, {"he"},{"goes"},{"to"},{"school"},} ;

    for (a = 1; a <= 4; a++) {
    for (b = 1; b <= 4; b++) {
    for (c = 1; c <= 4; c++) {
    for (d= 1; d<= 4; d++){
    if(b != a && c != a && c != b&&d!=a&&d!=b&&d!=c) {
    x++;
    printf ("%dth: %s, %s, %s %s\n",x, ar[a] , ar[b] , ar[c] ,ar[d] );
    }
    }
    }
    }
    }
    return 0;
    }

    উত্তরমুছুন
    উত্তরগুলি
    1. দ্বিতীয় উদাহরণের আউটপুট ঠিক আছে। তুমি একটা কিছু মিস করতেছো, আরো চিন্তা করো। আর এখানে কমেন্টে কোড পেস্ট কইর না। তাহলে অন্যরা কনফিউজড হয়ে যাবে। তারে চেয়ে বরং ফেসবুক পেজের মাধ্যমে যোগাযোগ করলে ভালো হয়।

      মুছুন
  2. এই মন্তব্যটি লেখক দ্বারা সরানো হয়েছে।

    উত্তরমুছুন
  3. plz add some extra test cases to understand..i already have done it & its give the right ans for the test cases but when i submit it..it shows the Wrong ans..so plz add some extra test cases..plz

    উত্তরমুছুন
  4. After trying for 7 days,I finally solved this problem.This problem was more like a puzzle.Figuring this puzzle was a nightmare.If you added some more test cases,it would be more helpful.At first,I had no clue why it was saying wrong ansawr despite my results matched with the test cases.Then I noticed something interesting about the input.........

    উত্তরমুছুন
  5. এই মন্তব্যটি লেখক দ্বারা সরানো হয়েছে।

    উত্তরমুছুন
  6. #include
    #include

    long long fact( int num ){
    int count = 1, i;
    for(i=2; i<=num; i++) count *= i;
    return count;
    }

    int main()
    {
    int t, l;
    scanf("%d", &t);
    for(l=0; l='a' && arr[i]<='z') || (arr[i]>='A' && arr[i]<='Z') || (arr[i]>='0' && arr[i]<='9')){
    str[k][j] = arr[i];
    j++;
    }
    if(arr[i+1]==' ' || arr[i+1]=='\0'){
    str[k][j] = '\0';
    k++;
    n++;
    j = 0;
    }
    }
    int count, mark[10];
    k = 0;
    char ch = '!';
    for(i=0; i1) mark[k++] = count;
    }

    long long ans = 1;
    for(i=0; i<k; i++){
    ans *= fact(mark[i]);
    }

    printf("1/%d\n", fact(n)/ans);

    }
    return 0;
    }


    Why I'm getting WA?!

    উত্তরমুছুন
  7. #include
    #include

    int length(char line[]);
    int factorial(int length);

    int main()
    {
    int T, len, c;
    long long int fact1, fact2;
    char S[301], l[2];
    char *p1, *p2;

    scanf("%d", &T);
    gets(l);

    while(T--)
    {
    gets(S);
    len = length(S);
    fact1 = factorial(len);

    p1 = strtok(S, ",.!;' ");
    while(p1 != NULL)
    {
    if(strlen(p1) > 0){
    c = 0;
    p2 = strtok(p1, ",.!;' ");
    while(p1 != NULL)
    {
    if(p1 == p2){
    c++;
    }
    p2 = strtok(NULL, ",.!;' ");
    }
    }
    p1 = strtok(NULL, ",.!;' ");
    if(c > 0){
    fact1 = fact1 / factorial(c);
    }
    }
    printf("1/%d\n", fact1);
    }

    return 0;
    }

    int length(char line[])
    {
    int n=0;
    char *word;

    word = strtok(line, ",. !;'");

    while(word != NULL)
    {
    if(strlen(word) > 0){
    n++;
    }

    word = strtok(NULL, ",. !;'");
    }

    return n;
    }

    int factorial(int length)
    {
    int f, i;

    for(i=1 ; i<=length ; i++){
    f = f * i;
    }

    return f;
    }


    প্রোগ্রাম রুন করালে এক লাইন নেয়ার পর আর ইনপুট নেয় না! প্রোগ্রামের ভুল্টা ঠিক ধরতে পারছি না... আমাকে কেউ হেল্প করেন প্লিজ...

    উত্তরমুছুন

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