Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Exercice] zCellular : un automate cellulaire !

10 juin 2015 à 14:49:35

Bonjour à tous ! 

Je ne sais pas si ce sujet a déjà été abordé dans des précédents posts (Je ne veux pas me spoiler la solution :) ) mais ce serait sympa si on pouvait donner une estimation du niveau nécessaire pour réussir ce projet. 

Par exemple, je viens de finir la 1ere partie du cours 'développer en C' d'Open class room :) et je voudrais savoir si j'ai le niveau suffisant pour attaquer ce programme en version console. Je remplace les cases blanches par des O et les cases noirs par des X par exemple.

Sinon un exemple d'exercice supplémentaire adapter à mon niveau ?  

  • Partager sur Facebook
  • Partager sur Twitter
10 juin 2015 à 14:54:17

Salut,

Je ne sais plus comment est organisé le cour d'OpenClassroom mais si tu as vue les tableaux tu peux réaliser cet exo :)

Je te conseil d'ouvrir un poste sur le forum pour demander de l'aide si tu as du mal à organiser ton algo ;)

  • Partager sur Facebook
  • Partager sur Twitter
Si debugger, c’est supprimer des bugs, alors programmer ne peut être que les ajouter - Edsger Dijkstra
10 juin 2015 à 14:58:54

Merci !

Malheureusement les tableaux sont abordés dans la partie 2 ! Je vais donc attendre un peu avant de tester cette exercice ! Mais j'aimerai consolider les bases acquises dans un premier temps avec un exercice adapté. J'ai bien aimé l'exercice du plus-moins ; C'était loin d'être insurmontable et ça permettait de revoir toutes les notions abordées dans la première partie. 

Je vais voir si je trouve des exercices à ma portée.

  • Partager sur Facebook
  • Partager sur Twitter
10 juin 2015 à 15:02:42

Tu peux faire des exercices du style :

afficher_chaine(char chaine[TAILLE]);

afficher_a_l_envers(char chaine[TAILLE]);

afficher_en_majuscule(char chaine[TAILLE]); /* voir la table ASCII */

... Après sans tableau, structure, pointeur t'ira pas beaucoup plus loin malheureusement ^^

  • Partager sur Facebook
  • Partager sur Twitter
Si debugger, c’est supprimer des bugs, alors programmer ne peut être que les ajouter - Edsger Dijkstra
13 juin 2015 à 12:48:13

@blixit : c'est plutôt normal que j'ai des meilleures perfs. Tu as un 4 coeurs AMD, 1.6 GHz. Le mien est un intel i7 (qui sont connus pour avoir une meilleure architecture) à 2.4 - 3.4 GHz. Donc avec un programme équivalent, j'aurai forcément des meilleures temps.

Pour ce qui est des 1er et dernier bits, je considère tout simplement qu'ils sont morts (0 donc).

@Killik55 : tu as fait toutes les améliorations ? Il y en a beaucoup à faire qui font aller vraiment plus loin que le plus ou moins de base. Rejouer, différentes difficultés etc... ça reste simple, mais as-tu fais une gestion des scores ? Que l'on peut enregistrer et charger (dans un fichier) sous tel pseudo. As-tu aussi découpé ton code en fonction ?
Et une IA ? Qui est en fait super simple, mais qui demande un minimum de réflexion pour garder le code propre et organisé.
Au TP, l'auteur du tuto propose pas  mal d'améliorations à faire. Si tu les fais toutes, tu assimilera bien la 1ere partie du cours.
Par contre, poste ton code sur un nouveau topique pour que des personnes puissent dire ce qui ne va pas et ce qui pourrait être amélioré, factorisé etc...

-
Edité par Escargotine 13 juin 2015 à 13:16:08

  • Partager sur Facebook
  • Partager sur Twitter
16 septembre 2015 à 1:14:05

Salut,

Il m'a fallu un bon petit moment pour comprendre ce qu il fallait faire, après quelques heures j'y suis arrive, fin je pense :-°.

A mon avis, c'est pas tres opti, si vous avez des conseils, je suis preneur :x

Voici le code :

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

void    putnl()
{
        write(1, "\n",1);
}

int     lengh(char *str)
{
        int i;

        i = 0;
        while (str[i])
                i++;
        return (i);
}

char    *str_dump(char *src, char *str)
{
        int i;
        int y;

        y = 0;
        i = lengh(src);
        str = (char*)malloc(i * sizeof(char));
        while (src[y])
        {
                str[y] = src[y]; // oblige?
                y++;
        }
        str[y] = '\0';
        return (str);
}

char    *str_cpy(char *src, char *str)
{
        int i;

        i = 0;
        while (src[i])
        {
                str[i] = src[i];
                i++;
        }
        str[i] = '\0';

        return (str);
}

char    *rule(int nb)
{
        char *rule;
        int bit;
        int i;

        bit = 128;
        i = 0;
        rule = NULL; // oblige?
        rule = (char *)malloc(8 * sizeof(char));
        if (rule == NULL)
                return ("ERREUR"); // ? pas sur

        while (i < 8)
        {
                if (nb >= bit)
                {
                        rule[i] = 'o';
                        nb -= bit;
                }
                else
                        rule[i] = '.';
                bit /= 2;
                i++;
        }
        rule[i] = '\0';
        return (rule);
}

char    *apply_rule(char *str_e, char *str, char *bit_rule)
{
        int i;

        i = lengh(str);
        if (str[i-1] == '.' && str[i-2] == 'o')
                str_e[i-1] = bit_rule[3];
        else if (str[i-1] == 'o' && str[i-2] == 'o')
                str_e[i-1] = bit_rule[1];
        while (i != 2)
        {
                if (str[i-1] == 'o' && str[i-2] == 'o' && str[i-3] == 'o')
                        str_e[i-2] = bit_rule[0];
                else if (str[i-1] == '.' && str[i-2] == 'o' && str[i-3] == 'o')
                        str_e[i-2] = bit_rule[1];
                else if (str[i-1] == 'o' && str[i-2] == '.' && str[i-3] == 'o')
                        str_e[i-2] = bit_rule[2];
                else if (str[i-1] == '.' && str[i-2] == '.' && str[i-3] == 'o')
                        str_e[i-2] = bit_rule[3];
                else if (str[i-1] == 'o' && str[i-2] == 'o' && str[i-3] == '.')
                        str_e[i-2] = bit_rule[4];
                else if (str[i-1] == '.' && str[i-2] == 'o' && str[i-3] == '.')
                        str_e[i-2] = bit_rule[5];
                else if (str[i-1] == 'o' && str[i-2] == '.' && str[i-3] == '.')
                        str_e[i-2] = bit_rule[6];
                else if (str[i-1] == '.' && str[i-2] == '.' && str[i-3] == '.')
                        str_e[i-2] = bit_rule[7];
                i--;
        }
        i--;
        if (str[i] == 'o' && str[i-1] == '.')
                str_e[i-1] = bit_rule[6];
        else if (str[i] == 'o' && str[i-1] == 'o')
                str_e[i-1] = bit_rule[4];

        return (str_e);
}

void    transform(char *str,int gen, int nb)
{
        char *str_e;
        char *bit_rule;
        int i;

        i = 0;
        str_e = NULL;
        bit_rule = rule(nb);
        str_e = str_dump(str, str_e);
        while (i != gen)
        {
                write(1,str,lengh(str_e));
                str_e = apply_rule(str_e, str, bit_rule);
                str = str_cpy(str_e,str);
                putnl();
                i++;
        }
        free(str_e);
}

int main(void)
{
        int rule;
        int gen;
        int nb_c;
        char *setting;

        setting = NULL;

        printf("Bienvenue dans zCellular\n\n");
        printf("Nombre de cellules : ");
        scanf("%d", &nb_c);
        printf("Regle (0-255) : ");
        scanf("%d", &rule);
        printf("Generation : ");
        scanf("%d", &gen);
        printf("\nLEGENDE\n. = cellule morte\no = cellule vivante\n");
        printf("Configuration initiale : ");
        setting = (char *)malloc(nb_c * sizeof(char));
        if (setting == NULL)
                return (1);
        scanf("%s", setting);
        putnl();

        transform(setting,gen,rule);
        putnl();
        free(setting); // utile?
        return (0);
}



-
Edité par cjsushi 16 septembre 2015 à 1:19:31

  • Partager sur Facebook
  • Partager sur Twitter
6 novembre 2015 à 15:17:31

Bonjour à tous, j'ai réalisé une version amélioré du jeu "Plus ou Moins", vous pouvez le télécharger sur ce lien : [URL=http://uptobox.com/9wf1heosyiy0]main.exe - 29 KB[/URL]

Et voici mon code :


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

int main(int argc, char *argv[])
{
    int nombreMystere = 0,
    nombreEntree = 0,
    nombre_de_coup = 0,
    MAX = 100;
    const int MIN = 0;

    srand(time(NULL)); // L'ordinateur pioche un nombre au hasard//
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

    printf("Voici le jeu du plus ou moins.\n\n");
    printf("Le but du jeu est de deviner Le Nombre Mystere.\n\n");
    printf("Bref, commencons ! A vous de jouer ! ;)\n\n\n");

    int end = 0,
    modedejeu = 0,
    niveau = 0;

    do
    {

   printf("============MENU============\n\n");
   printf("Choisissez un mode de jeux : \n\n");
   printf("1. Mode solo\n");
   printf("2. Mode multi\n\n");


    do
    {
        printf("Votre choix: ");
        scanf("%d", &modedejeu);
        printf("\n\n");
    } while ( modedejeu < 1 || modedejeu > 2);

        printf("Choisissez un niveau de difficulte : \n\n");
        printf("1. Entre 0 et 100\n");
        printf("2. Entre 0 et 1000\n");
        printf("3. Entre 0 et 10000\n");
        printf("4. Retourner au menu precedent.\n");

    printf("\n\n");

    do
    {
        printf("Votre choix: ");
        scanf("%d", &niveau);
        system("cls");
    } while (niveau < 1 || niveau > 4);

    if (niveau == 1)
    {
        MAX = 100;
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    }

    else if (niveau == 2)
    {
        MAX = 1000;
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    }

    else if (niveau == 3)
    {
        MAX = 10000;
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    }

    if ( niveau == 4 )
    {
        continue;
    }




    switch (modedejeu)
    {
        case 1:
            srand(time(NULL)); // L'ordinateur pioche un nombre au hasard//
            nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        break;

        case 2:
            printf("Choisissez un nombre a faire deviner a votre adversaire: ");
            scanf("%d", &nombreMystere);
            system("cls");
        break;
    }

    printf("\n\n");

    do
    {
        printf("Quel est le nombre mystere ? ");
        scanf("%d", &nombreEntree);
        nombre_de_coup ++;

        printf("\n\n");

    if (nombreMystere < nombreEntree)
    {
        printf("C'est moins !\n\n");
    }

    else if (nombreMystere > nombreEntree)
    {
        printf("C'est plus !\n\n");
    }

    else
    {
        printf("Bravo ! Vous avez trouvez Le Nombre Mystere en %d coups !!!\n\n", nombre_de_coup);
    }

    } while (nombreMystere != nombreEntree);



    int continuerPartie = 1, nombre_entree2 = 0, continuerPartieMulti = 1;

    printf("Alors, ca vous a plu ?\n\n");
    printf("En tous cas j'espere que oui...\n\n");
    printf("Si vous souhaitez refaire une partie, taper 1, si non, taper 2 puis appuyer sur n'importe quel touche.\n\n");

    do
    {
        printf("Votre choix : \n");
        scanf("%d", &continuerPartie);
        system("cls");
    } while (continuerPartie < 1 || continuerPartie > 2);

    printf("\n\n");

    int nombre_de_coup_2 = 0;

    if (continuerPartie == 2)
        break;

    } while( end = 1 );

}




-
Edité par SaïdElMouden 7 novembre 2015 à 14:46:29

  • Partager sur Facebook
  • Partager sur Twitter
6 novembre 2015 à 15:45:03

C'est bien. Mais ce n'est pas le sujet, ici on te demande de réaliser un automate cellulaire.
  • Partager sur Facebook
  • Partager sur Twitter
Un vrai cours de: (C | C++ | Haskell débutant | Haskell intermédiaire | Rust).
9 novembre 2015 à 18:40:59

Effectivement, c'est pas le bon endroit. Comme il y a quelques remarques à faire sur ton code, je te conseille de le poster dans un nouveau topique.
  • Partager sur Facebook
  • Partager sur Twitter
30 novembre 2015 à 12:29:02

salut jai des problemes pour gere les grands nombres en langage c pour les methodes dexponentiation rapide

  • Partager sur Facebook
  • Partager sur Twitter
30 novembre 2015 à 14:13:33

Tu devrais crééer ton propre sujet pour ça. Réponse rapide: gmp.

-
Edité par Mad scientist 30 novembre 2015 à 14:13:46

  • Partager sur Facebook
  • Partager sur Twitter
Un vrai cours de: (C | C++ | Haskell débutant | Haskell intermédiaire | Rust).
1 décembre 2015 à 4:30:08

exemple  calcul de x puissance n

  • Partager sur Facebook
  • Partager sur Twitter
1 décembre 2015 à 5:50:34

\(x ^ n\)

Mad scientist a écrit:

Tu devrais crééer ton propre sujet pour ça

-
Edité par Mad scientist 1 décembre 2015 à 5:51:43

  • Partager sur Facebook
  • Partager sur Twitter
Un vrai cours de: (C | C++ | Haskell débutant | Haskell intermédiaire | Rust).
7 décembre 2015 à 17:51:11

bonjour

je suis un etudien qui cherche votre aide.

je veux une fonction ou procédure qui sert a donner tous les mots possible former par 7ou8ou9 caractére aleatroire  dans un dictionnaire.!

  • Partager sur Facebook
  • Partager sur Twitter
7 décembre 2015 à 18:17:12

Mad scientist a écrit:

Mad scientist a écrit:

Tu devrais crééer ton propre sujet pour ça

  • Partager sur Facebook
  • Partager sur Twitter
Un vrai cours de: (C | C++ | Haskell débutant | Haskell intermédiaire | Rust).
12 décembre 2015 à 0:26:27

Mais sérieusement, c'est énervant toutes ces personnes qui postent ici pour demander de l'aide sur des choses qui n'ont rien à voir.

LISEZ LE TITRE, LE PREMIER ET LES QUELQUES DERNIERS MESSAGES, C'EST PAS COMPLIQUE !

-
Edité par Escargotine 12 décembre 2015 à 0:28:11

  • Partager sur Facebook
  • Partager sur Twitter
14 décembre 2015 à 12:25:04

Bonjour à tous!

J'ai un projet à mener à bien qui concerne exactement ce sujet. # Mad scientist ne me frappe pas!

Mon objectif est de créer un automate cellulaire qui étudierait l'état du réseau 3g (automate cellulaire pour le réseau cellulaire lol grosse blague j'arrête l'humour j'me mets au bridge..)

J'aimerai définir les cellules par leur environnement (montagne,campagne,mer,ville), leur indice de propagation des ondes 3g(en rapport avec l'environnement exemple la mer=5; la ville=3; la montagne=1) et la présence ou non d'une antenne dans cette cellule avec une certaine portée en cellules. La caractéristique la plus importante serait l'état de la cellule càd couverte (par le réseau) ou non. Mon but serait de faire ressortir/remonter les cellules qui ne sont pas couvertes.

Débutant en C j'ai encore du mal à comprendre les codes des autres et quand je lis les vôtres ici et bien disons que je me noie un peu ^^'

Ce que je ne comprends vraiment pas c 'est la manière dont on s'informe de l'état des cellules voisines.

Premièrement j'aimerai savoir si mon projet vous semble être réalisable dans les grandes lignes, je ne rêve pas d'une interface graphique de ouf mais au moins un résultat juste et interprétable
Ensuite j'apprécierai qu'une personne me donne quelques conseils voire directives (quitte à me donner un autre exo pour l'entraînement), j'ai une ébauche de code mais je ne pense pas qu'elle soit assez abouti pour le publier.. Je viens de tomber sur ce topic et je m'essaierai à l'exercice proposé dès que j'en aurai la possibilité.

PS: A noter qu'il faut encore que j'étudie les fonctions malloc et tutti quanti vu que je n'en suis pas encore arriver à ce point dans le cours.

Je vous remercie de l'attention que vous pourrez porter à mon post. :)

  • Partager sur Facebook
  • Partager sur Twitter
14 décembre 2015 à 16:53:17

salut je n'arrive pas avoir xcode sur mon ordi

  • Partager sur Facebook
  • Partager sur Twitter
19 décembre 2015 à 2:11:32

@totyyvesgueyo : est-ce que tu sais lire ?

@angelincianfarani : Si tu ne sais pas encore te servir de malloc et free, c'est vrai que ça va être compliqué. Pour l'instant, je t'invite à comprendre et t'entraîner sur les pointeurs. D'ailleurs, si tu as une quelconque difficulté pour comprendre comment ça fonctionne, n'hésite pas à demander.
Par contre, si c'est pour demander de l'aide spécifiquement sur un code où tu t'entraînes sur les pointeurs (à priori sans lien avec l'automate cellulaire), poste un nouveau topique (que tu peux indiquer ici via un lien si tu veux, dans ton précédent message sur ce topique).

N'hésite pas non plus à poser des questions sur les morceaux de code postés sur ce topique que tu as du mal à comprendre.

Je veux bien t'aider mais je sais pas si je passerai beaucoup de temps là-dessus, j'ai un projet en C à terminer et une matière à réviser pour la fac. Et un tuto sur la mémoire en Java à faire (sur un autre site).

-
Edité par Escargotine 19 décembre 2015 à 2:14:41

  • Partager sur Facebook
  • Partager sur Twitter
21 décembre 2015 à 13:22:05

bonjour,
Je suis nouvelle ,et je viens de decouvrir le forum
Merci ;)
  • Partager sur Facebook
  • Partager sur Twitter
25 décembre 2015 à 15:10:59

Bonjour à toutes/tous, joyeux noël,

J'ai besoin d'aide en C car je souhaite réaliser un algorithme de résumé.

Imaginez un document où chaque titre est associé à un paragraphe. Par exemple, un titre « function » suivi d'un paragraphe qui explique comment marchent les fonctions. Sauf qu'il y aurait plusieurs dizaines voire centaines de titres et de paragraphes associés.

Grâce à un algorithme qui fonctionnerait comme un mini shell, l'objectif est de récupérer la liste de tous les titres. Ceci est facile est se fait par le biais de délimiteurs placés juste avant chaque titre, par exemple, //+++//function, pour le titre « function ».

Ensuite, il faut récupérer la saisie de l'utilisateur dans le mini shell, et proposer une autocomplétion en fonction de la liste des titres disponibles.

Pour stocker la liste des titres dans une structure de données, plusieurs choix s'offrent à nous. Le plus simple est de faire une liste chaînée. Une autre méthode, très ambitieuse serait d'utiliser un arbre mais j'ai peur qu'elle soit trop compliquée.

Bref, j'attends vos réponses afin que l'on puisse parler de ça.

  • Partager sur Facebook
  • Partager sur Twitter
theodoronido@gmail.com
25 décembre 2015 à 15:18:32

Pour une N-ième fois, ceci est un topique sur un exercice en particulier. Là c'est hors sujet, crée ton propre topique. C'est quand même pas compliqué, ça doit faire la 5e fois que le répète (et je suis pas le seul).
  • Partager sur Facebook
  • Partager sur Twitter
1 janvier 2016 à 16:24:40

Exercice 4 : Plus petit élément d’un tableau d’entiers

Ecrire une fonction, minTableau, qui retourne le plus petit élément d’un tableau T de N éléments.

Exercice 5 : Plus petit et plus grand éléments d’un tableau
Ecrire une procédure, calculerMinMax, qui à partir d’un tableau d’entiers, noté T, de N éléments donnés, retourne le plus petit et le plus grand éléments du tableau, en faisant attention à ne le parcourir qu’une seule fois.

Exercice 6 : Inversion d'un tableau
Soit un tableau t d'entiers. Écrire une procédure itérative, inverserTableau, qui change de place les éléments de ce tableau de telle façon que le nouveau tableau t soit une sorte de "miroir" de l'ancien.
  • Partager sur Facebook
  • Partager sur Twitter
1 janvier 2016 à 16:36:10

À ce niveau là, je pense que la meilleure chose qu'on puisse faire pour ce sujet serait de le fermer.
  • Partager sur Facebook
  • Partager sur Twitter
Un vrai cours de: (C | C++ | Haskell débutant | Haskell intermédiaire | Rust).
3 janvier 2016 à 0:06:18

Désespérant -.- C'est peut-être la solution.
  • Partager sur Facebook
  • Partager sur Twitter
24 février 2016 à 13:52:40

Bonjour 

Voici le code que j'ai voulu réaliser pour cet exercice. Pour cela j'ai voulu afficher avec la sdl une ligne par génération. Code Blocks m'indique que je n'utilise pas la variable position initialisé ligne 13 pourtant je l'utilise a la ligne 48 et 49. Voici mon code:

#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_ttf.h>
#include "main.h"

int test();

int main ( int argc, char** argv )
{
    SDL_Surface *ecran = NULL, *cas = NULL;
    SDL_Rect position;
    SDL_Event event;
    int continuer = 1;

    int tab[NB_BLOCS_LARGEUR - 1] = {0};
    int i = 0;
    int generation = 0;

    SDL_Init(SDL_INIT_VIDEO);


    ecran = SDL_SetVideoMode(LARGEUR_FENETRE, HAUTEUR_FENETRE, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
    SDL_WM_SetCaption("Jeu de la Vie", NULL);


    while(continuer)
    {
        SDL_PollEvent(&event);
        switch(event.type)
        {
            case SDL_QUIT:
                continuer = 0;
                break;
            default:
                break;
        }

    SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
    SDL_Flip(ecran);
    generation++;

    for (i = 1; i < NB_BLOCS_LARGEUR - 1; i++)
    {
        tab[i] = test(tab[i-1], tab[i],tab[i+1]);

        position.x = i * TAILLE_BLOC;
        position.y = generation;
        SDL_FillRect(cas, NULL, SDL_MapRGB(cas->format, 0, 0, 0));
    }

    if  (generation == NB_BLOCS_HAUTEUR)
        continuer = 0;
    }


    SDL_FreeSurface(ecran);
    SDL_FreeSurface(cas);
    SDL_Quit();

    return EXIT_SUCCESS;
}

int test(int GAUCHE, int CENTRE, int DROITE)
{
int nCENTRE;

        if(DROITE == 0 && CENTRE == 0 && GAUCHE == 0)
            nCENTRE = 0;

        if(DROITE == 0 && CENTRE == 0 && GAUCHE == 1)
            nCENTRE = 1;

        if(DROITE == 0 && CENTRE == 1 && GAUCHE == 1)
            nCENTRE = 1;

        if(DROITE == 1 && CENTRE == 1 && GAUCHE == 1)
            nCENTRE = 0;

        if(DROITE == 0 && CENTRE == 1 && GAUCHE == 0)
            nCENTRE = 1;

        if(DROITE == 1 && CENTRE == 1 && GAUCHE == 0)
            nCENTRE = 0;

        if(DROITE == 1 && CENTRE == 0 && GAUCHE == 1)
            nCENTRE = 0;

        if(DROITE == 1 && CENTRE == 0 && GAUCHE == 0)
            nCENTRE = 1;
    return nCENTRE;
}

(le header definit seulement quelques constantes (taille_bloc , nb_blocs_largeur...))



  • Partager sur Facebook
  • Partager sur Twitter
26 février 2016 à 11:00:47

Coucou,

Ton compilateur a raison, tu n'utilise pas ta variable position. Tu lui affecte des valeurs successives mais tu ne l'utilise (la lis) jamais.

La fonction test est largement simplifiable, le PollEvent devrait être effectué tant qu'il reste des évenements dans la file d'évenements et tu devrais tester les retours des fonctions qui peuvent échouer. La valeur pointée par cas est utilisée sans avoir été allouée…

  • Partager sur Facebook
  • Partager sur Twitter
Un vrai cours de: (C | C++ | Haskell débutant | Haskell intermédiaire | Rust).
8 mars 2016 à 21:38:07 - Message modéré pour le motif suivant : Toute forme de publicité est interdite