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

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

    }
    return 0;
}

std::vector<std::vector<int>> getVisionPattern2d()
{
    vector<vector<int>> pattern;pattern.resize(60);
    int i,j;
    for(i=0;i<7;i++){
        pattern[i].resize(7);
        for(j=0;j<7;j++){
            if(i==j) pattern[i][j]=i+2;
            else pattern[i][j]=1;
            ///print(pattern[i][j])
        }
    }
    return pattern;
}

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