#include "robot.h"
#include <bits/stdc++.h>
#define li -2
#define wa -1
#define ns 0
#define md 3
#define exp 2
#define ret 1
#define dr 0
using namespace std;
void p(vector <int> a, int b, char c){
vector <int> aux(5);
aux[0]=a[0];
aux[1]=a[4];
aux[2]=a[3];
aux[3]=a[2];
aux[4]=a[1];
set_instruction(aux, b, c);
return;
}
void program_pulibot()
{
p({ns, li, wa, ns, li}, exp, 'S');//esquina noroeste
p({ns, li, ns, ns, li}, exp, 'E');
p({ns, li, ns, wa, li}, exp, 'E');
p({ns, li, li, ns, exp}, exp, 'S');//esquina noreste
p({ns, li, li, wa, exp}, md, 'W');
p({ns, exp, wa, li, li}, md, 'N');//esquina suroeste
p({ns, exp, ns, li, li}, exp, 'E');
p({ns, exp, li, li, wa}, ret, 'N');//esquina sureste
p({ns, wa, li, li, exp}, ret, 'W');
p({ns, exp, li, li, ns}, ret, 'N');
p({ns, ns, li, li, exp}, ret, 'W');
p({ns, li, wa, exp, ns}, md, 'S');//limite arriba exp
p({ns, li, wa, exp, wa}, md, 'S');
p({ns, li, ns, exp, ns}, exp, 'E');
p({ns, li, ns, exp, wa}, exp, 'E');
p({ns, li, wa, wa, exp}, md, 'W');
p({ns, li, ns, ns, exp}, exp, 'E');
p({ns, li, ns, wa, exp}, exp, 'E');
p({ns, li, wa, ns, exp}, exp, 'S');
p({ns, exp, wa, li, ns}, md, 'N');//limite abajo exp
p({ns, exp, wa, li, wa}, md, 'N');
p({ns, exp, ns, li, ns}, exp, 'E');
p({ns, exp, ns, li, wa}, exp, 'E');
p({ns, wa, wa, li, exp}, md, 'W');
p({ns, ns, ns, li, exp}, exp, 'E');
p({ns, wa, ns, li, exp}, exp, 'E');
p({ns, ns, wa, li, exp}, exp, 'N');
p({ns, ns, li, wa, exp}, md, 'W');//limite derecha exp
p({ns, wa, li, wa, exp}, md, 'W');
p({ns, ns, li, ns, exp}, exp, 'S');
p({ns, wa, li, ns, exp}, exp, 'S');
p({ns, exp, li, wa, wa}, md, 'N');
p({ns, exp, li, ns, ns}, exp, 'S');
p({ns, exp, li, ns, wa}, exp, 'S');
p({ns, exp, li, wa, ns}, exp, 'W');
p({ns, ns, exp, wa, li}, md, 'E');//limite izquierda exp
p({ns, wa, exp, wa, li}, md, 'E');
p({ns, ns, exp, ns, li}, exp, 'S');
p({ns, wa, exp, ns, li}, exp, 'S');
p({ns, exp, wa, wa, li}, md, 'N');
p({ns, exp, ns, ns, li}, exp, 'S');
p({ns, exp, wa, ns, li}, exp, 'S');
p({ns, exp, ns, wa, li}, exp, 'E');
p({ns, ns, ns, ns, exp}, exp, 'E');//centro todo
p({ns, ns, ns, exp, ns}, exp, 'E');
p({ns, ns, exp, ns, ns}, exp, 'S');
p({ns, exp, ns, ns, ns}, exp, 'E');
p({ns, wa, wa, wa, exp}, md, 'W');//centro block
p({ns, wa, wa, exp, wa}, md, 'S');
p({ns, wa, exp, wa, wa}, md, 'E');
p({ns, exp, wa, wa, wa}, md, 'N');
for(int i=0; i<4; ++i){//centro 2 paredes
for(int j=0; j<4; ++j){
if(j!=i){
vector <int> pos;
pos.assign(5, wa);
pos[i+1]=exp;
pos[j+1]=ns;
pos[0]=ns;
char aux='W';
if(j==0){
aux='N';
}
else if(j==1){
aux='E';
}
else if(j==2){
aux='S';
}
p(pos, exp, aux);
}
}
}
for(int i=0; i<4; ++i){//centro una pared
for(int j=0; j<4; ++j){
if(j!=i){
vector <int> pos;
pos.assign(5, ns);
pos[i+1]=exp;
pos[j+1]=wa;
char aux='W';
int aguss=0;
while(aguss==i || aguss==j){
++aguss;
}
if(aguss==0){
aux='N';
}
else if(aguss==1){
aux='E';
}
else if(aguss==2){
aux='S';
}
p(pos, exp, aux);
}
}
}
p({ns, exp, exp, ns, ns}, exp, 'S');//centro 2 exp 0 wa
p({ns, exp, ns, exp, ns}, exp, 'E');
p({ns, exp, ns, ns, exp}, exp, 'E');
p({ns, ns, exp, exp, ns}, exp, 'W');
p({ns, ns, exp, ns, exp}, exp, 'S');
p({ns, ns, ns, exp, exp}, exp, 'E');
p({ns, exp, exp, wa, ns}, exp, 'W');//centro 2 exp 1 wa
p({ns, exp, exp, ns, wa}, exp, 'S');
p({ns, exp, ns, exp, wa}, exp, 'E');
p({ns, exp, wa, exp, ns}, exp, 'W');
p({ns, exp, ns, wa, exp}, exp, 'E');
p({ns, exp, wa, ns, exp}, exp, 'S');
p({ns, ns, exp, exp, wa}, exp, 'N');
p({ns, wa, exp, exp, ns}, exp, 'W');
p({ns, ns, exp, wa, exp}, exp, 'N');
p({ns, wa, exp, ns, exp}, exp, 'S');
p({ns, ns, wa, exp, exp}, exp, 'N');
p({ns, wa, ns, exp, exp}, exp, 'E');
p({ns, exp, exp, wa, wa}, md, 'N');//centro 2 exp 2 wa
p({ns, exp, wa, exp, wa}, md, 'N');
p({ns, exp, wa, wa, exp}, md, 'N');
p({ns, wa, exp, exp, wa}, md, 'E');
p({ns, wa, exp, wa, exp}, md, 'E');
p({ns, wa, wa, exp, exp}, md, 'S');
p({ns, exp, exp, exp, ns}, exp, 'W');//centro 3 exp
p({ns, exp, exp, ns, exp}, exp, 'S');
p({ns, exp, ns, exp, exp}, exp, 'E');
p({ns, ns, exp, exp, exp}, exp, 'N');
//--------------------------------
p({exp, li, li, ret, exp}, ret, 'W');//ret esquina
p({exp, exp, ret, li, li}, ret, 'N');
p({exp, li, ret, exp, ns}, ret, 'S');//ret arriba
p({exp, li, ret, exp, wa}, ret, 'S');
p({exp, li, ret, ns, exp}, ret, 'W');
p({exp, li, ret, wa, exp}, ret, 'W');
p({exp, li, ns, ret, exp}, ret, 'W');
p({exp, li, wa, ret, exp}, ret, 'W');
p({exp, exp, ret, li, ns}, ret, 'N');//ret abajo
p({exp, exp, ret, li, wa}, ret, 'N');
p({exp, ns, ret, li, exp}, ret, 'W');
p({exp, wa, ret, li, exp}, ret, 'W');
p({exp, ret, ns, li, exp}, ret, 'W');
p({exp, ret, wa, li, exp}, ret, 'W');
p({exp, ns, li, ret, exp}, ret, 'W');//ret derecha
p({exp, wa, li, ret, exp}, ret, 'W');
p({exp, exp, li, ret, ns}, ret, 'N');
p({exp, exp, li, ret, wa}, ret, 'N');
p({exp, exp, li, ns, ret}, ret, 'N');
p({exp, exp, li, wa, ret}, ret, 'N');
p({exp, ns, exp, ret, li}, ret, 'E');//ret izquierda
p({exp, wa, exp, ret, li}, ret, 'E');
p({exp, exp, ns, ret, li}, ret, 'N');
p({exp, exp, wa, ret, li}, ret, 'N');
p({exp, exp, ret, ns, li}, ret, 'N');
p({exp, exp, ret, wa, li}, ret, 'N');
p({exp, li, wa, ret, li}, ret, 'T');//fin
p({exp, li, ret, ns, li}, ret, 'T');
p({exp, li, ns, ret, li}, ret, 'T');
p({exp, li, ret, wa, li}, ret, 'T');
return;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |