Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

why wa

Posted by testjoan at 2006-05-13 01:10:42 on Problem 1835
# include <stdio.h>
struct pos{
	int x,y,z;
	int face;
	int status;//used for identify the man's head-direction 
}pos;

void go(char,int);
void walk(int);
void turnleft();
void turnright();
void turnup();
void turndown();

void main()
{
	int nOfcase;
	int nOfstep;
	char changeFace[10];
	int steplen; 

	scanf("%d",&nOfcase);
	while (nOfcase--){
		pos.x=pos.y=pos.z=pos.face=pos.status=0;
		pos.status=2;
		scanf("%d",&nOfstep);
		while(nOfstep--){
			scanf("%s %d",changeFace,&steplen);
			go(changeFace[0],steplen);
		}
		printf("%d %d %d %d\n",pos.x,pos.y,pos.z,pos.face);
	}
}

void go(char face,int len)
{
	switch (face){
	case 'f':walk(len);break;
	case 'b':pos.face = (3+pos.face) % 6;//turnback;
			 walk(len);break;
	case 'l':turnleft();
			 walk(len);break;
	case 'r':turnright();
			 walk(len);break;
	case 'u':turnup();
			 walk(len);break;
	case 'd':turndown();
			 walk(len);break;
	}
}

void turnleft()
{
	switch(pos.face){
		case 0:
			switch(pos.status){
			case 1:pos.face=2;break;
			case 4:pos.face=5;break;
			case 2:pos.face=4;break;
			case 5:pos.face=1;break;
			}
			break;
		case 3:
			switch(pos.status){
			case 1:pos.face=5;break;
			case 4:pos.face=2;break;
			case 2:pos.face=1;break;
			case 5:pos.face=4;break;
			}
			break;
		case 1:
			switch(pos.status){
			case 0:pos.face=5;break;
			case 3:pos.face=2;break;
			case 2:pos.face=0;break;
			case 5:pos.face=3;break;
			}
			break;
		case 4:
			switch(pos.status){
			case 0:pos.face=2;break;
			case 3:pos.face=5;break;
			case 2:pos.face=3;break;
			case 5:pos.face=0;break;
			}
			break;
		case 2:
			switch(pos.status){
			case 0:pos.face=4;break;
			case 1:pos.face=0;break;
			case 3:pos.face=1;break;
			case 4:pos.face=3;break;
			}
			break;
		case 5:
			switch(pos.status){
			case 0:pos.face=1;break;
			case 1:pos.face=3;break;
			case 3:pos.face=4;break;
			case 4:pos.face=0;break;
			}
			break;
	}
}

void turnright()
{
	switch(pos.face){
		case 0:
			switch(pos.status){
			case 1:pos.face=5;break;
			case 4:pos.face=2;break;
			case 2:pos.face=1;break;
			case 5:pos.face=4;break;
			}
			break;
		case 3:
			switch(pos.status){
			case 1:pos.face=2;break;
			case 4:pos.face=5;break;
			case 2:pos.face=4;break;
			case 5:pos.face=1;break;
			}
			break;
		case 1:
			switch(pos.status){
			case 0:pos.face=2;break;
			case 3:pos.face=5;break;
			case 2:pos.face=3;break;
			case 5:pos.face=0;break;
			}
			break;
		case 4:
			switch(pos.status){
			case 0:pos.face=5;break;
			case 3:pos.face=2;break;
			case 2:pos.face=0;break;
			case 5:pos.face=3;break;
			}
			break;
		case 2:
			switch(pos.status){
			case 0:pos.face=1;break;
			case 1:pos.face=3;break;
			case 3:pos.face=4;break;
			case 4:pos.face=0;break;
			}
			break;
		case 5:
			switch(pos.status){
			case 0:pos.face=4;break;
			case 1:pos.face=0;break;
			case 3:pos.face=1;break;
			case 4:pos.face=3;break;
			}
			break;
	}
}
void turnup()
{
	switch(pos.face){
		case 0:
			switch(pos.status){
			case 1:pos.face=1;pos.status=3;break;
			case 4:pos.face=4;pos.status=3;break;
			case 2:pos.face=2;pos.status=3;break;
			case 5:pos.face=5;pos.status=3;break;
			}
			break;
		case 3:
			switch(pos.status){
			case 1:pos.face=1;pos.status=0;break;
			case 4:pos.face=4;pos.status=0;break;
			case 2:pos.face=2;pos.status=0;break;
			case 5:pos.face=5;pos.status=0;break;
			}
			break;
		case 1:
			switch(pos.status){
			case 0:pos.face=0;pos.status=4;break;
			case 3:pos.face=3;pos.status=4;break;
			case 2:pos.face=2;pos.status=4;break;
			case 5:pos.face=5;pos.status=4;break;
			}
			break;
		case 4:
			switch(pos.status){
			case 0:pos.face=0;pos.status=1;break;
			case 3:pos.face=3;pos.status=1;break;
			case 2:pos.face=2;pos.status=1;break;
			case 5:pos.face=5;pos.status=1;break;
			}
			break;
		case 2:
			switch(pos.status){
			case 0:pos.face=0;pos.status=5;break;
			case 3:pos.face=3;pos.status=5;break;
			case 1:pos.face=1;pos.status=5;break;
			case 4:pos.face=4;pos.status=5;break;
			}
			break;
		case 5:
			switch(pos.status){
			case 0:pos.face=0;pos.status=2;break;
			case 3:pos.face=3;pos.status=2;break;
			case 1:pos.face=1;pos.status=2;break;
			case 4:pos.face=4;pos.status=2;break;
			}
			break;
	}
}
void turndown()
{
	switch(pos.face){
		case 0:
			switch(pos.status){
			case 1:pos.face=4;pos.status=0;break;
			case 4:pos.face=1;pos.status=0;break;
			case 2:pos.face=5;pos.status=0;break;
			case 5:pos.face=2;pos.status=0;break;
			}
			break;
		case 3:
			switch(pos.status){
			case 1:pos.face=4;pos.status=3;break;
			case 4:pos.face=1;pos.status=3;break;
			case 2:pos.face=5;pos.status=3;break;
			case 5:pos.face=2;pos.status=3;break;
			}
			break;
		case 1:
			switch(pos.status){
			case 0:pos.face=3;pos.status=1;break;
			case 3:pos.face=0;pos.status=1;break;
			case 2:pos.face=5;pos.status=1;break;
			case 5:pos.face=2;pos.status=1;break;
			}
			break;
		case 4:
			switch(pos.status){
			case 0:pos.face=3;pos.status=4;break;
			case 3:pos.face=0;pos.status=4;break;
			case 2:pos.face=5;pos.status=4;break;
			case 5:pos.face=2;pos.status=4;break;
			}
			break;
		case 2:
			switch(pos.status){
			case 0:pos.face=3;pos.status=2;break;
			case 3:pos.face=0;pos.status=2;break;
			case 1:pos.face=4;pos.status=2;break;
			case 4:pos.face=1;pos.status=2;break;
			}
			break;
		case 5:
			switch(pos.status){
			case 0:pos.face=3;pos.status=5;break;
			case 3:pos.face=0;pos.status=5;break;
			case 1:pos.face=4;pos.status=5;break;
			case 4:pos.face=1;pos.status=5;break;
			}
			break;
	}
}


void walk(int l)
{
//	printf("face%d status%d\n",pos.face,pos.status);
	switch(pos.face){
	case 0:pos.x += l;break;
	case 1:pos.y += l;break;
	case 2:pos.z += l;break;
	case 3:pos.x -= l;break;
	case 4:pos.y -= l;break;
	case 5:pos.z -= l;break;
	}
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator