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

int getMove1d(std::vector<int> v)
{
    int i;
    if(v.size()==3){
        return 0;
    }else if(v.size()==5){
        for(i=0;i<v.size();i++){
            if(v[i]==3){
                return i;
            }
        }
    }else{
        int max1=0;
        for(i=0;i<v.size();i++){
            if(v[i]==2){
                max1=max(max1,abs(i-(int)(v.size())/2));
            }
        }
        for(i=0;i<v.size();i++){
            if(v[i]==2 && abs(i-(int)(v.size())/2)==max1){
                return i;
            }
        }
    }
    return 0;
}

std::vector<std::vector<int>> getVisionPattern2d()
{
    return {{1,2,3},{6,5,4},{7,8,9}};
}

std::pair<int, int> getMove2d(std::vector<std::vector<int>> v)
{
    int l=v.size(),c=v[0].size(),i,j,distm=1e9,ci,cj;
    for(i=0;i<l;i++){
        for(j=0;j<c;j++){
            if(((v[l/2][c/2]==9 && v[i][j]==1) || v[i][j]==v[l/2][c/2]+1) && abs(l/2-i)+abs(c/2-j)>0 &&  abs(l/2-i)+abs(c/2-j)<distm){
                distm=abs(l/2-i)+abs(c/2-j);
                ci=i;cj=j;
            }
        }
    }
    return {ci,cj};
}
