Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Kyoto Die Game

Name: Anonymous 2007-02-27 21:40 ID:gtys9iUO

Has anyone ever made the Kyoto'99 Die Game?

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;
    }

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List