#include "vision.h"
std::vector<int> getVisionPattern1d()
{
    std::vector<int>ans;
    int i=1;
    ans.push_back(1);
    ans.push_back(1);
    ans.push_back(2);
    ans.push_back(1);
    ans.push_back(3);
    ans.push_back(1);
    return ans;
}
int getMove1d(std::vector<int> v)
{
    int i=0;
    for(auto x:v){
        i++;
    }
    int poz=i/2;
    if(v[poz]==1){
        if(v[poz+1]==2){
            return poz+1;
        }
        else if(v[poz+1]==1){
            if(v[poz-1]!=1){
                return poz-1;
            }
            else
                return poz+1;
        }
        else {
            return poz+1;
        }
    }
    if(v[poz]==2){
        if(v[poz+2]==3){
            return poz+2;
        }
        else{
            return poz-2;
        }
    }
    if(v[poz]==3){
        if(v[poz+2]==1){
            return poz+3;
        }
        else{
            return poz-3;
        }
    }
}
std::vector<std::vector<int>> getVisionPattern2d()
{
    std::vector<std::vector<int>>ans;
    ans={{1,2,1,2,1},{1,1,1,1,1},{1,1,4,2,1},{1,2,1,1,1},{1,1,1,1,2}};
    return ans;
}
std::pair<int, int> getMove2d(std::vector<std::vector<int>> v)
{
    int i=0,j;
    for(auto x:v[0]){
        i++;
    }
    int x=i/2,y=i/2;
    int bet=v[x][y];
    if(bet==1){
        if(v[x+1][y]==2){
            return{x+1,y};
        }
        if(v[x-1][y]==2){
            return{x-1,y};
        }
        if(v[x+1][y+1]==2){
            return{x+1,y+1};
        }
        if(v[x+1][y-1]==2){
            return{x+1,y-1};
        }
        if(v[x-1][y-1]==2){
            return{x-1,y-1};
        }
        if(v[x-1][y+1]==2){
            return{x-1,y+1};
        }
        if(v[x][y+1]==2){
            return{x,y+1};
        }
        if(v[x][y-1]==2){
            return{x,y-1};
        }
    }
    if(bet==2){
        for(i=-2;i<=2;i++){
            for(j=-2;j<=2;j++){
                if(v[x+i][y+j]==4){
                    return{x+i,y+j};
                }
            }
        }
    }
    if(bet==4){
        if(v[x+2][y+2]==2){
            return {x+4,y+4};
        }
        if(v[x+2][y-2]==2){
            return {x+4,y-4};
        }
        if(v[x-2][y-2]==2){
            return {x-4,y-4};
        }
        if(v[x-2][y+2]==2){
            return {x-4,y+4};
        }
    }
}