CoddityTeam / movaicode

Concours mensuel du Pire Développeur de France
123 stars 10 forks source link

Il faut toujours valider les entrées #208

Closed ludwhe closed 1 year ago

ludwhe commented 2 years ago

C'est important de pas faire confiance aux entrées alors on les valide hein !

namespace mc10;
public class Class1
{
    int jesuisou = 0;

    // short pour gratter toute la mémoire que l'on peut
    public short trouve_un_9_de_paques(String le_jardin_de_mamie)
    {
        // validation de la longueur de la chaîne quand même
        short jesuisla = 0;
        while (true)
        {
            try
            {
                var le_caractere = le_jardin_de_mamie[jesuisla];
                jesuisla = (short)(jesuisla + 1);
            }
            catch (IndexOutOfRangeException)
            {
                // c'est bon on est au bout de la chaîne
                break;
            }
        }

        // est-ce que l'on a overflow ?
        if (jesuisla < 0)
            throw new ArgumentOutOfRangeException("le_jadrin_de_mamie est trop long");

        // avant de trouver le 9, autant vérifier s'il y en a un
        bool ya1oeuf = false;
        for (short jesuisla2 = 0; jesuisla2 < jesuisla; jesuisla2++)
        {
            if (le_jardin_de_mamie[jesuisla2] == "9".ToCharArray()[0])
            {
                ya1oeuf = true;
            }
        }

        if (ya1oeuf == true)
        {
            // ya un 9, OK
        }
        else if (ya1oeuf == false)
        {
            return -1;
        }
        else
        {
            // oula quesquispasse
            throw new QuesquispasseException();
        }

        // OK maintenant on le trouve ?
        if (le_jardin_de_mamie[0] == "9".Where(charactere => charactere == "9"[0]).Single())
        {
            return (short)this.jesuisou;
        } else {
            this.jesuisou = this.jesuisou + 1;
            return trouve_un_9_de_paques(new string(le_jardin_de_mamie.Skip(1).ToArray()));
        }
    }
}

public class QuesquispasseException : Exception
{
    public QuesquispasseException() : base()
    {
    }

    public QuesquispasseException(string? message) : base(message)
    {
    }

    public QuesquispasseException(string? message, Exception? innerException) : base(message, innerException)
    {
    }
}
louismarslen commented 2 years ago

Salut salut,

Bon t'as perdu, comme ça c'est dit (désolé pour la non-prise-de-pincettes 😊). En revanche, ça veut dire deux choses cool :

  1. tu n'es pas si movai, ce qui est ma foi agréable
  2. l'édition 11 est dispo, ce qui te donne une nouvelle chance de briller : ça se passe ici

Pour info, c'est MajorTom327 qui gagne. Son issue : #207

La bise, cordialement, La Direction.