1
Name:
Anonymous
2007-02-27 21:40
ID:gtys9iUO
Has anyone ever made the Kyoto'99 Die Game?
19
Name:
Anonymous
2007-03-02 23:41
ID:M/nnP8fc
To hell with number tricks. Here's a C solution:
#include <stdio.h>
#include <stdlib.h>
enum { TOP, EAST, NORTH, WEST, SOUTH, BOTTOM };
void init(unsigned int die[]);
void roll(unsigned int die[], int a, int b, int c, int d);
int main()
{
char dir[] = "\0\0\0\0\0";
unsigned int die[6];
int c;
while (scanf("%d", &c) && c > 0)
{
init(die);
while (c-- > 0 && scanf("%s", dir))
{
switch (dir[0])
{
case 'e':
roll(die, TOP, WEST, BOTTOM, EAST);
break;
case 'n':
roll(die, TOP, SOUTH, BOTTOM, NORTH);
break;
case 'w':
roll(die, TOP, EAST, BOTTOM, WEST);
break;
case 's':
roll(die, TOP, NORTH, BOTTOM, SOUTH);
break;
}
}
printf("%d\n", die[TOP]);
}
return 0;
}
void init(unsigned int die[])
{
die[TOP] = 1;
die[NORTH] = 2;
die[WEST] = 3;
die[EAST] = 4;
die[SOUTH] = 5;
die[BOTTOM] = 6;
}
void roll(unsigned int die[], int a, int b, int c, int d)
{
unsigned int tmp = die[a];
die[a] = die[b] ;
die[b] = die[c];
die[c] = die[d];
die[d] = tmp;
}