#include "vision.h"
#include<bits/stdc++.h>
using namespace std;
std::vector<int> getVisionPattern1d()
{
    return {1,1,1,2,1,3};
}

int getMove1d(std::vector<int> v)
{
    if(v[v.size()/2]==1)
    {
        for(int i=0;i<v.size();i++)
        {
            if(v[i]==3)
            {
                return i;
            }
        }
        for(int i=0;i<v.size();i++)
        {
            if(v[i]==2)
            {
                return i;
            }
        }
        return 0;
    }
    else if(v[v.size()/2]==2)
    {
        for(int i=0;i<v.size();i++)
        {
            if(v[i]==3)
            {
                return i;
            }
        }
    }
    else
    {
        for(int i=0;i<v.size()/2;i++)
        {
            if(v[i]!=1)
            {
                return v.size()-1;
            }
        }
        return 0;
    }
}

std::vector<std::vector<int>> getVisionPattern2d()
{
    return {{1,1,1,1,1,1},{1,2,1,1,1,1},{1,1,1,1,3,1},{1,1,2,1,1,1}};
}

std::pair<int, int> getMove2d(std::vector<std::vector<int>> v)
{
    int sz=v.size();
    if(sz==3)
    {
        for(int i=0;i<sz;i++)
        {
            for(int j=0;j<sz;j++)
            {
                if(v[i][j]==3)
                {
                    return {i,j};
                }
            }
        }
        for(int i=0;i<sz;i++)
        {
            for(int j=0;j<sz;j++)
            {
                if(v[i][j]==2)
                {
                    return {i,j};
                }
            }
        }
        return {0,0};
    }
    else if(sz==5)
    {
        for(int i=0;i<sz;i++)
        {
            for(int j=0;j<sz;j++)
            {
                if(v[i][j]==3)
                {
                    return {i,j};
                }
            }
        }
        for(int i=0;i<sz;i++)
        {
            for(int j=0;j<sz;j++)
            {
                if(v[i][j]==2)
                {
                    return {i,j};
                }
            }
        }
    }
    else
    {
        if(v[sz/2+1][sz/2+1]==2)
        {
            return {sz-1,sz-1};
        }
        else if(v[sz/2+1][sz/2-1]==2)
        {
            return {sz-1,0};
        }
        else if(v[sz/2-1][sz/2+1]==2)
        {
            return {0,sz-1};
        }
        else
        {
            return {0,0};
        }
    }
}
