#include "vision.h"
#include<bits/stdc++.h>
using namespace std;
vector<int> getVisionPattern1d(){
    return {1,2,1,1,2,2};
}
bool eq(vector<int>a,vector<int>b){
    if(a.size()!=b.size())return 0;
    for(int i=0;i<a.size();i++)if(a[i]!=b[i])return 0;
    return 1;
}
int getMove1d(std::vector<int> v){
    if(eq(v,{1,1,2,2,1}))return 3;
    if(eq(v,{1,2,2,1,2}))return 4;
    if(eq(v,{2,1,2,1,1}))return 4;
    if(eq(v,{1,2,2,1,1}))return 1;
    if(eq(v,{2,1,2,2,1}))return 0;
    if(eq(v,{1,1,2,1,2}))return 0;
    for(int i=0;i<v.size();i++){
        if(v[i]==2)return i;
    }
}

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

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