Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/10/2014, à 20:51

Jetster

Génération combinaison

Bonjour à tous,

je me permets de poster ce sujet ici, je suis sous Ubutun et je cherche un moyen de pouvoir générer l'ensemble des combinaisons possible composé de huit caractère avec uniquement des chiffres entre 0 et 9 puis de pouvoir copier et coller dans un fichier texte.

Merci à vous, en espérant recevoir une réponse.

Hors ligne

#2 Le 26/10/2014, à 23:10

Compte supprimé

Re : Génération combinaison

Un programme en python ? C'est pas très compliqué smile

#3 Le 27/10/2014, à 00:41

Compte supprimé

Re : Génération combinaison

Au fait, j'y avais pas pensé, mais ça fait dix millions de nombres ton truc, t'as fait chauffer mon laptop mad

Voilà le code (oui, le premier truc auquel j'ai pensé c'est une fonction récursive, c'est pas du tout efficace mais au moins ça marche) :

#!/usr/bin/env python3

fichier="résultats.txt"
nbchiffres=8

sortie=open(fichier, "w")

c=list("0"*nbchiffres)

def write_combi(rang):
    if rang==(nbchiffres-1):
        for i in range(10):
            c[rang]=str(i)
            sortie.write("".join(c) + "\n")
    else:
        for i in range(10):
            c[rang]=str(i)
            write_combi(rang+1)

write_combi(0)

Attention ça va prendre pas mal de temps à remplir ton fichier. Je chercherai un truc mieux optimisé demain, là je dors big_smile

Edit : si c'est pour une bruteforce je dirai que je l'ai fait sous ta contrainte yikes
Edit 2 : et avec Dropbox qui a voulu sauvegarder les résultats t'as aussi bouffé mon forfait mad T'es qu'un fumier neutral

Edit 3 : comme t'as pas encore répondu, je prends le temps de te mettre une version plus rapide en C++ :

#include <iostream>
#include <fstream>
#include <string>
using namespace std;


const string nom_fichier("results");
const int nbchiffres(8), chiffremax(9);
    

void write_combi(ostream*, int, string*);

int main() {
    string combi(nbchiffres, '0');

    ofstream sortie(nom_fichier.c_str(), ios_base::out);

    write_combi(&sortie, 0, &combi);

    return 0;
}

void write_combi(ostream* sortie, int rang, string* cache) {
    for (int i = 0; i<=chiffremax; ++i) {
        (*cache)[rang] = to_string(i)[0];

        if (rang == nbchiffres-1)
            *sortie << *cache << '\n';
        else
            write_combi(sortie, rang+1, cache);
    }
}

Dernière modification par CasoarRotatif (Le 27/10/2014, à 16:05)