CoddityTeam / movaicode

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

Le mardi gras en C++ #192

Open Tzigamm opened 2 years ago

Tzigamm commented 2 years ago

Voilà ma contribution, j'ai essayé de suivre mes cours de C++ et d'utiliser au maximum les fonctions de la STD et les templates pour avoir un code optimisé et flexible. Voilà ma fonction:

#include <string>
#include <sstream>
#include <vector>
#include <random>
#include <thread>

#define STANDARD_LIBRARY std //Au cas où si on veut changer

template<template<typename, typename> class typeDeConteneur, typename typeDuTruc, typename allocateur=STANDARD_LIBRARY::allocator<typeDuTruc>> static typeDuTruc choisi1TrucDans1Machin(const typeDeConteneur<typeDuTruc, allocateur>& liste2Truc) noexcept;

static STANDARD_LIBRARY::string choisi_une_recette_aleatoire_de_mardi_gras(STANDARD_LIBRARY::vector<STANDARD_LIBRARY::string> les_specialites_regionales_de_mardi_gras) noexcept {return choisi1TrucDans1Machin(les_specialites_regionales_de_mardi_gras);}

#define TemplateALaCon(X) template<template<typename, typename> class typeDeConteneur, typename X, typename allocateur=STANDARD_LIBRARY::allocator<X>>
#define ConteneurDeTemplate(X) X<typeDuTruc, allocateur> //penser à se servir du define ligne 17, sinon ça marche pas

TemplateALaCon(typeDuTruc) typeDuTruc choisi1TrucDans1Machin(const ConteneurDeTemplate(typeDeConteneur)& liste2Truc) noexcept
{
    auto s = STANDARD_LIBRARY::this_thread::get_id(); //seed
    STANDARD_LIBRARY::stringstream ss;
    ss << s;
    STANDARD_LIBRARY::mt19937 rng(STANDARD_LIBRARY::stol(ss.str())); //obligé, sinon le compilateur dit qu'il y a une erreur de type
    STANDARD_LIBRARY::uniform_int_distribution<STANDARD_LIBRARY::mt19937::result_type> d(0,liste2Truc.size());
    return liste2Truc.at(d(rng));
}

J'ai essayé de rester sobre sur la mise en page et d'écrire du mauvais code lisible.

Et le code pour la faire marcher au cas où, je me suis concentré sur la fonction comme demandé donc j'ai pas mis de saloperies dedans:

#include <iostream>
#include <string>
#include <vector>

int main()
{
    std::vector<std::string> les_specialites_regionales_de_mardi_gras({"gaufres", "croustillons du ch'nord", "bugnes", "ganses", "pets de nonne", "roussettes", "merveilles", "crouchepettes", "bougnettes", "beugnot", "bottereaux", "oreillettes"});

    std::cout << choisi1TrucDans1Machin(les_specialites_regionales_de_mardi_gras) << std::endl;

    return 0;
}
louismarslen commented 2 years ago

Salut salut,

Malheureusement tu n'as pas gagné l'édition 9 de MOVAICODE (c'est S4lem qui gagne : #186) 😭 Toutefois nous t'invitons fortement à participer à l'édition 10 qui vient d'être lancée : le README est ici

Merci pour ta prestation 🤘