কম্পিউটার টিউটোরিয়াল

সি++-এ রোবট বাউন্ডেড ইন সার্কেল (Robot Bounded In Circle)


মান লেযিয়ে একটি অনন্ত সমতল আছে, একটি রোবট প্রাথমিকভাবে (0, 0) অবস্থানে দাঁড়িয়ে আছেই এবং উত্তর দিকে মুখ করে। রোবট তিন ধরনের নির্দেশনা গ্রহণ করতে পারে -

  • G - সরাসরি ১ ইউনিট এগিয়ে যাওয়া;

  • L - বাম দিকে ৯০ ডিগ্রি ঘুরা;

  • R - ডান দিকে ৯০ ডিগ্রি ঘুরা।

রোবট নির্দেশনা অনুযায়ী কাজ করে, এবং নির্দেশনাগুলো অনন্তকাল ধরে রিপিট হয়। আমাদের যাচাই করতে হবে যে কি সমতলে এমন কোনো বৃত্ত وجود করে যেন রোবট সেটির বাইরে না যায়। উদাহরণস্বরূপ, ইনপুট "GGLLGG" হলে উত্তর হবে true। (0,0) থেকে (0,2) যাবে, তারপর এটি চিরকাল লুপ করবে, তাই এটি একটি বন্ধ পথ, এবং উত্তর true।

এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব -

  • একটি dir অ্যারে তৈরি করুন := [[0,1], [1,0], [0,-1], [-1,0]]

  • একটি pair temp তৈরি করুন, প্রাথমিকভাবে (0, 0) এবং k := 0

  • i = 0 থেকে s.size()-1 পর্যন্ত লুপ চালান

    • যদি s[i] == 'G' হয়, তবে

      • temp := (dir[k][0], dir[k][1])

    • অন্যথায় যদি s[i] == 'L' হয়, তবে k := (k + 1) % 4, অন্যথায় k := (k - 1) % 4

  • যদি temp (0, 0) না হয় এবং k > 0 হয় তবে false রিটার্ন করুন, অন্যথায় true

উদাহরণ

নিচের বাস্তবায়নটি দেখে আরও ভালো বুঝতে পারবেন -

#include <bits/stdc++.h> using namespace std; int dir[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; class Solution {    public:    bool isRobotBounded(string s) {       pair <int, int> temp({0,0});       int k = 0;       for(int i = 0; i < s.size(); i++){          if(s[i] == 'G'){             temp.first += dir[k][0];             temp.second += dir[k][1];          }else if(s[i] == 'L'){             k = (k + 1) % 4;          }else{             k = ((k - 1) + 4) % 4;          }       }       return temp.first == 0 && temp.second == 0 || k > 0;    } }; main(){    Solution ob;    cout << (ob.isRobotBounded("GGLLGG")); }

ইনপুট

"GGLLGG"

আউটপুট

1

  1. N কাটা দিয়ে বৃত্তের টুকরোর সংখ্যা গণনা C++-এ

  2. C++-এ বৃত্তে ডায়ামেট্রিক্যালি অপোজিট পজিশনে থাকা ব্যক্তির অবস্থান

  3. C++-এ একটি রেখা বৃত্তকে স্পর্শ করে কিনা বা ইন্টারসেক্ট করে কিনা চেক করা

  4. C++-এ বর্গের পরিবেষ্টিত বৃত্তের ক্ষেত্রফল