Home

Archivos

Buscar

Categorías

Feeds:

RSS / Atom

Top Coder - Rochambo· 19. December 2008, 02:15

Otro que en ruby habría sido más sencillo.
Enunciado

   class Rochambo
    {
        static public int wins(string opponent)
        {
            int win = 0;
            char ultima = '0';
            char penultima = '0';
            char[] opciones={'R','P','S'};
            foreach (char turnoOp in opponent)
            {
                char prediccion=new char();
                if (penultima.Equals('0'))
                    prediccion='S';
                else if (penultima.Equals(ultima))
                    prediccion = ultima;
                else
                {
                    foreach (char op in opciones)
                    {
                        if (!op.Equals(ultima) && !op.Equals(penultima))
                            prediccion = op;
                    }
                }
                if (ganador(turnoYo(prediccion),turnoOp))
                    win++;
                penultima = ultima;
                ultima = turnoOp;
            }
            return win;
        }
        static char turnoYo(char prediccion)
        {
            if (prediccion.Equals('S')) return 'R';
            if (prediccion.Equals('R')) return 'P';
            if (prediccion.Equals('P')) return 'S';
            return 'E';
        }
        static bool ganador(char yo, char op)
        {
            if (yo.Equals('R') && op.Equals('S'))
                return true;
            if (yo.Equals('S') && op.Equals('P'))
                return true;
            if (yo.Equals('P') && op.Equals('R'))
                return true;
            return false;
        }
    }