টিকিট টেক টো গেম লেটকোড সলিউশনটিতে বিজয়ী সন্ধান করুন


কাঠিন্য মাত্রা সহজ
প্রায়শই জিজ্ঞাসা করা হয় মর্দানী স্ত্রীলোক আপেল ফেসবুক Zoho
বিন্যাস

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

  • প্লেয়ারগুলি কেবল এমন স্কোয়ারগুলিতে পদক্ষেপ নিতে পারে যা ইতিমধ্যে ব্যবহার করা হয়নি।
  • প্রথম খেলোয়াড় A সর্বদা "এক্স" অক্ষর রাখে, যখন দ্বিতীয় প্লেয়ার B সর্বদা "ও" অক্ষর রাখে।
  • "এক্স" এবং "ও" অক্ষর সর্বদা খালি স্কোয়ারে স্থাপন করা হয়। ইতিমধ্যে ব্যবহার করা স্কয়ারগুলি কখনও ব্যবহার করা উচিত নয়।
  • খেলাটি শেষ হয় যখন কোনও সারি, কলাম বা তির্যক ভরাট একই (খালি নয়) অক্ষরের 3 টি হয়।
  • সমস্ত স্কোয়ার খালি না থাকলে গেমটিও শেষ হয়। কিছু ক্ষেত্রে, উভয়ই জিততে পারে না এবং ড্র করে শেষ হয়।
  • গেমটি শেষ হলে আর কোনও চালানো যায় না। যদি কিছু পদক্ষেপ বাকী থাকে, রায়টি "মুলতুবি" is
  • প্লেয়ার "এ" প্রথম চালায় এবং তারপরে উভয় খেলোয়াড়ই বিকল্প টার্ন ব্যবহার করে।

আসুন কয়েকটি উদাহরণ দেখুন।

moves = [[0,0],[2,0],[1,1],[2,1],[2,2]]
"A"

টিকিট টেক টো গেম লেটকোড সলিউশনটিতে বিজয়ী সন্ধান করুন

ব্যাখ্যা: উপরের চিত্রে প্রদর্শিত হয়েছে, "এক্স" সহ খেলোয়াড় গেমটি জিতবে। একটি সর্বদা গেমটি শুরু করে, সুতরাং বিজয়ীটিও "এ"।

টিকিট টেক টো গেম লেটকোড সলিউশনে বিজয়ীর সন্ধানের পদ্ধতি

সমস্যাটি কিছু পদক্ষেপের পরে টিক টেক টো গেমের চূড়ান্ত রায়টি খুঁজে পাওয়া find এটি একটি স্ট্যান্ডার্ড গেম, সুতরাং আমাদের কেবল প্রক্রিয়াটি অনুকরণ করা দরকার। ইনপুটে প্রদত্ত একই ক্রমে আমাদের পদক্ষেপগুলিও সম্পাদন করতে হবে। একটি উপায় হ'ল 3 × 3 একটি গ্রিড তৈরি করা এবং তারপরে একই প্রক্রিয়াটি অনুকরণ করা। তবে তা না করে আমরা উভয় খেলোয়াড়ের অ্যারে ব্যবহার করে করা চালগুলি ট্র্যাক করে রাখি। আমরা উভয় খেলোয়াড়ের জন্য 4 টি পৃথক অ্যারে ব্যবহার করি, প্রতিটি সারি এবং কলাম সম্পর্কিত তাদের দ্বারা চালিত চালনার জন্য 2। প্রতিটি পদক্ষেপের জন্য, আমরা এই অ্যারেগুলিতে সঞ্চিত মানগুলিকে বৃদ্ধি করি। একবার মানগুলি 3 এর সমান হয়ে যায় আমরা জানি যে 3 টি মুভিগুলি অনুভূমিকভাবে বা উল্লম্বভাবে তৈরি করা হয়।

ত্রিভুজগুলির জন্য, আমরা কেবল অ্যারেগুলির মতো 4 ভেরিয়েবল ব্যবহার করি। যখন মানটির কোনওটি 3 এর সমান হয় আমরা সেই অনুযায়ী নামটি ফিরিয়ে দিই। তবে যদি আমরা সমস্ত পদক্ষেপ না নেওয়া পর্যন্ত কোনও রায়ে পৌঁছায় না। তারপরে আমরা যদি গ্রিডের সমস্ত স্কোয়ার দখল করে রেখে থাকে এবং অন্য মুলতুবি ফিরে আসে তবে আমরা ড্রয়ের রায়টি ফিরিয়ে দেব।

টিকিট টেক টো গেম লেটকোড সলিউশনে বিজয়ীর সন্ধানের কোড

সি ++ কোড

#include <bits/stdc++.h>
using namespace std;

string tictactoe(vector<vector<int>>& moves) {
    int aRow[3] = {0}, bRow[3] = {0}, aCol[3] = {0}, bCol[3] = {0};
    int aDiagonal1 = 0, bDiagonal1 = 0, aDiagonal2 = 0, bDiagonal2 = 0;
    int n = moves.size();
    for (int i = 0; i < n; i++) {
        int r = moves[i][0], c = moves[i][1];
        if (i % 2 == 1) {
            if (++bRow[r] == 3 || ++bCol[c] == 3 || (r == c && ++bDiagonal1 == 3) || (r + c == 2 && ++bDiagonal2 == 3)) return "B";
        }else {
            if (++aRow[r] == 3 || ++aCol[c] == 3 || (r == c && ++aDiagonal1 == 3) || (r + c == 2 && ++aDiagonal2 == 3)) return "A";
        }
    }
    return n == 9 ? "Draw" : "Pending";
}

int main(){
    vector<vector<int>> moves = {{0,0}, {2,0}, {1,1}, {2,1}, {2,2}};
    cout<<tictactoe(moves);
}
A

জাভা কোড

import java.util.*;
import java.lang.*;
import java.io.*;

class Main
{
  public static String tictactoe(int[][] moves) {
        int[] aRow = new int[3];
        int[] aCol = new int[3];
        int[] bRow = new int[3];
        int[] bCol = new int[3];
        int aDiagonal1 = 0, bDiagonal1 = 0, aDiagonal2 = 0, bDiagonal2 = 0;
        int n = moves.length;
        for (int i = 0; i < n; i++) {
            int r = moves[i][0], c = moves[i][1];
            if (i % 2 == 1) {
                if (++bRow[r] == 3 || ++bCol[c] == 3 || (r == c && ++bDiagonal1 == 3) || (r + c == 2 && ++bDiagonal2 == 3)) return "B";
            }else {
                if (++aRow[r] == 3 || ++aCol[c] == 3 || (r == c && ++aDiagonal1 == 3) || (r + c == 2 && ++aDiagonal2 == 3)) return "A";
            }
        }
        return n == 9 ? "Draw" : "Pending";        
    }
    
  public static void main (String[] args) throws java.lang.Exception {
    int[][] moves = {{0,0}, {2,0}, {1,1}, {2,1}, {2,2}};
    	System.out.println(tictactoe(moves));
  }
}
A

জটিলতা বিশ্লেষণ

সময় জটিলতা

চালু), যেখানে এন হ'ল ফাংশনে ইনপুট হিসাবে প্রেরণযোগ্য সংখ্যা।

স্পেস জটিলতা ity

ও (আর + সি), কারণ আমরা টিক টেক টো গেমের গ্রিডের সারি এবং কলামের সমান আকারের 4 টি অ্যারে তৈরি করি।