À propos de Codingame : bien débuter les challenges en C++

Attention : cet article commence à dater (2015). La plupart des informations doivent être toujours correctes mais il y a sans doute eu des évolutions côté Codingame.

Je ne connaissais pas Codingame. Suite discussion avec un pote j’ai eu l’occasion d’y faire un tour ce soir. C’est vraiment super. Que vous soyez développeur C, C++, Python, Java… vous y trouverez des problèmes à résoudre. Y a un tutorial qui explique l’environnement, ce que l’on peut faire, ce que l’on ne peut pas faire etc. Je suis bluffé par ce que j’ai vu. Faudra que je m’y intéresse vraiment.

Une fois que vous avez passé le problème du tutoriel il faut juste aller dans Games/Single Player par exemple.

Pour info, le code que j’ai envoyé pour « résoudre » le premier « challenge » en Janvier 2015

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
struct enemy{
    int     dist;
    string  name;
     
    enemy(int d, const std::string& n) : dist(d), name(n) {}
};
 
int main(){
     
    vector<enemy> MyEnemies;
     
    while (1) {
        int count;                          // The number of current enemy ships within range
        cin >> count;
        cin.ignore();
         
        for (int i = 0; i < count; i++) {
            string  name;                   // The name of this enemy
            int     dist;                   // The distance to your cannon of this enemy
            cin >> name >> dist;
            cin.ignore();
             
            MyEnemies.push_back(enemy(dist, name));
        }
         
        sort(MyEnemies.begin(), MyEnemies.end(),
            [](const enemy &a, const enemy &b) {
                return a.dist > b.dist;
            });
         
        // Write an action using cout. DON'T FORGET THE "<< endl"
        // To debug: cerr << "Debug messages..." << endl;
        enemy e = MyEnemies.back();
        cout << e.name << endl;
        MyEnemies.pop_back();
    }
}

Je viens de retourner faire un tour sur le code en question. Il semble que depuis Janvier 2015 ils aient décidé de nous faire débuter avec un challenge encore plus simple. Voilà ce que j’ai proposé ce soir :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
struct enemy {
  int     dist;
  string  name;
  enemy(const int d, const std::string& n) : dist(d), name(n) {}
};
 
int main() {
 
  vector<enemy> MyEnemies;
  while (true) {
    for (auto i = 0; i != 2; ++i) {
      string  name;                                                             // The name of the enemy
      int     dist;                                                             // The distance to our cannon
      cin >> name >> dist; cin.ignore();
 
      MyEnemies.push_back({ dist, name });
    }
 
    sort(MyEnemies.begin(), MyEnemies.end(), [](const enemy &a, const enemy &b) {
      return a.dist > b.dist;
    });
 
    enemy e = MyEnemies.back();
    cout << e.name << endl;
    MyEnemies.pop_back();
  }
}
Share this...

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

  

  

  

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.