Chevaux de course | CodinGame

in #fr6 years ago

Capture.PNG

Bonjour ! Connaissez-vous la plateforme CodinGame ? Le site qui permet de s'améliorer en programmation en réalisant des challenges et en participant à des clash of code :D

Dans cet article, je vais réaliser avec vous un de ces challenges pour vous montrer un peu la mécanique du jeu qui peut être un peu compliquée à prendre en main !

Chevaux de course

Nous voici donc sur la page d'accueil du défi. Sur cette dernière, nous pouvons observer différentes parties :

  • Que vais-je apprendre ? (ici en l'occurence, nous allons apprendre à utiliser les boucles, le tri et les listes)
  • L'énoncé
  • L'histoire

1.PNG

En cliquant sur le boutont résoudre, nous tombons sur une nouvelle page. Sur cette dernière, nous avons un IDE (un Environnement de Développement Intégré en français).

2.PNG

Nous avons le choix de coder en plusieurs langages. Pour ma pars, je vais choisir le C#. Faîtes ici comme vous le désirez, c'est surtout une question de confort.
Dans la fenêtre en haut à gauche, l'objectif est rappelé. En dessous, nous pouvons voir des infos sur les entrées et les sorties du jeu ainsi que des exemples.

Notre IDE nous donne le code suivant :

using System;
using System.Linq;
using System.IO;
using System.Text;
using System.Collections;
using System.Collections.Generic;

/**
 * Auto-generated code below aims at helping you parse
 * the standard input according to the problem statement.
 **/
class Solution
{
    static void Main(string[] args)
    {
        int N = int.Parse(Console.ReadLine());
        for (int i = 0; i < N; i++)
        {
            int pi = int.Parse(Console.ReadLine());
        }

        // Write an action using Console.WriteLine()
        // To debug: Console.Error.WriteLine("Debug messages...");

        Console.WriteLine("answer");
    }
}

Codons !

Le raisonnement

Le but du programme est d'afficher les deux puissances les plus proches et d'en afficher leur écart avec un nombre entier positif.

Nous savons que N correspond au nombre de chevaux. Créons un tableau qui aura pour taille le nombre de chevaux.

int[] horses = new int [N];

A présent, nous voulons stocker dans chaque cases de ce tableau, la puissance de nos chevaux. Grâce aux données du jeu, nous savons que la puissance d'un cheval se trouve dans notre boucle for. En effet, c'est la variable (ou l'objet) pi qui désigne la puissance.

Remplaçons donc cette variable par le nom de notre tableau. Mettons la variable i dans ce tableau afin que toutes le cases contiennent une valeur au fur et à mesure que la boucle va s'incrémenter.

for (int i = 0; i < N; i++)
{
    horses[i] = int.Parse(Console.ReadLine());
}

Notre tableau contient à présent toutes les puissances de tous les chevaux. Nous pouvons les trier. Pour ceci, en C#, nous pouvons utiliser le Array.sort(). Pour trier notre tableau, mettons-le entre les parenthèses.

Array.Sort(horses);

Il nous reste à présent à identifier les puissance les plus proches afin de les comparer ! Je vous laisse un peu réfléchir pour ça ! :D

La solution

Si vous n'avez pas trouvé, ce n'est pas grave, regardez cette solution et essayez de comprendre comment la différence est calculée ! Bien évidemment, si vous ne comprennez pas, vous pouvez toujours me demander des explications en commentaire =D

using System;
using System.Linq;
using System.IO;
using System.Text;
using System.Collections;
using System.Collections.Generic;

/**
 * Auto-generated code below aims at helping you parse
 * the standard input according to the problem statement.
 **/
class Solution
{
    static void Main(string[] args)
    {
        // Description des objets
        int N = int.Parse(Console.ReadLine());
        int[] horses = new int [N];
        
        for (int i = 0; i < N; i++)
        {
            horses[i] = int.Parse(Console.ReadLine());
        }

        Array.Sort(horses);
        int diff = Math.Abs(horses[0] - horses[1]);
        for (int i = 1; i < N - 1; i++)
        {
            int d = Math.Abs(horses[i+1] - horses[i]);
            if (d < diff) 
            { 
                diff = d; 
            }
        }

        // Write an action using Console.WriteLine()
        // To debug: Console.Error.WriteLine("Debug messages...");

        Console.WriteLine(diff);
    }
}


J'éspère que cette petite introduction à CodinGame va vous plaire ! J'écris l'article en même temps que je code, mes explications sont donc sûrement un peu brouillons mais n'hésitez pas à me demander de l'aide en commentaire ! X)
Sort:  

C'est super interressant ce format de blog ! Dans la tête d'un dev ! Merci pour ce partage.

Merci beaucoup pour ton commentaire, ça fait toujours plaisir de lire ça ✌️

Une belle manière d'apprendre tout en s'amusant ! Upvoté à 100% !

Merci beaucoup pour le soutien !

Ce post a été supporté par notre initiative de curation francophone @fr-stars.
Rendez-vous sur notre serveur Discord pour plus d'informations

Coin Marketplace

STEEM 0.24
TRX 0.21
JST 0.036
BTC 98210.68
ETH 3384.50
USDT 1.00
SBD 3.43