Skip to content

Instantly share code, notes, and snippets.

@dazza
Created September 13, 2008 08:10
Show Gist options
  • Save dazza/10580 to your computer and use it in GitHub Desktop.
Save dazza/10580 to your computer and use it in GitHub Desktop.
#include <fstream>
using namespace std;
char grid[10][10];
class state
{
public:
int i,j;
char direct;
};
int main()
{
ifstream fin("ttwo.in");
ofstream fout("ttwo.out");
//fin
state farmer,cow;
for (int i = 0 ; i<10; i++)
{
for (int j = 0 ; j<10 ;j++)
{
fin>>grid[i][j];
if (grid[i][j] == 'C')
{
cow.i = i;
cow.j = j;
cow.direct = 'N';
}
else if (grid[i][j] == 'F')
{
farmer.i = i;
farmer.j = j;
farmer.direct = 'N';
}
}
}
//go
int counter = 0 ;
for ( counter = 0 ; counter < 160000 ;counter++)
{
switch (cow.direct)
{
case 'N':
if (cow.i>0&&grid[cow.i-1][cow.j]!='*')
{
cow.i--;
}
else
{
cow.direct = 'E';
}
break;
case 'E':
if (cow.j<9&&grid[cow.i][cow.j+1]!='*')
{
cow.j++;
}
else
{
cow.direct = 'S';
}
break;
case 'S':
if (cow.i<9&&grid[cow.i+1][cow.j]!='*')
{
cow.i++;
}
else
{
cow.direct = 'W';
}
break;
case 'W':
if (cow.j>0&&grid[cow.i][cow.j-1]!='*')
{
cow.j--;
}
else
{
cow.direct = 'N';
}
break;
}
//FARMER
switch (farmer.direct)
{
case 'N':
if (farmer.i>0&&grid[farmer.i-1][farmer.j]!='*')
{
farmer.i--;
}
else
{
farmer.direct = 'E';
}
break;
case 'E':
if (farmer.j<9&&grid[farmer.i][farmer.j+1]!='*')
{
farmer.j++;
}
else
{
farmer.direct = 'S';
}
break;
case 'S':
if (farmer.i<9&&grid[farmer.i+1][farmer.j]!='*')
{
farmer.i++;
}
else
{
farmer.direct = 'W';
}
break;
case 'W':
if (farmer.j>0&&grid[farmer.i][farmer.j-1]!='*')
{
farmer.j--;
}
else
{
farmer.direct = 'N';
}
break;
}
if((farmer.i == cow.i)&&(farmer.j == cow.j))
{
break;
}
}
if (counter<160000)
{
fout<<counter+1<<endl;
}
else
fout<<0<<endl;
fin.close();
fout.close();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment