1. Si vous venez d'arriver sur le forum et que vous êtes un peu perdus, cliquez ici !
    Rejeter la notice

Floodatorium

Discussion dans 'Discussions diverses' créé par Endy, 27 Mai 2012.

  1. Seblor

    Seblor Responsable de Modération
    Staff

    Inscrit:
    15 Sept 2013
    Messages:
    2 572
    Points:
    195
    Sexe:
    Homme
    Désolé pour le retard (demande sur discord la prochaine fois ^^)

    Pour ton mastermind, Pour chaque case, t'as 3 cas : "au bon endroit" "pas au bon endroit" et "faux"
    Pour déterminer chaque cas : une bonne vieille boucle for :
    Code (cpp):

    short[] results;
    for (int i=0 ; i<solution.length ; i++)
        results[i] = ( Arrays.asList(solution).contains(userInput[i]) ) ? ( (solution[i] == userInput[i]) ? (1) : (2) ) : (3)
     
    Voilà. Donc tu as ton tableau results avec des valeurs 1, 2, et 3 correspondant respectivement aux cas que j'ai cité au dessus

    Concrètement, j'ai fais 2 opérateurs ternaires imbriqués, mais tu peux faire des if else si tu veux.
     
  2. Nolan-XX

    Nolan-XX Modérateur
    Staff

    Inscrit:
    29 Déc 2012
    Messages:
    10 243
    Points:
    304
    Sexe:
    Homme
    Merci du coup de main, mais le problème c'est que le code que tu me donnes (si j'ai j'ai bien compris) me sert a faire ce que je déjà fait ... Ce que je cherche a faire, c'est justement dire a l'IA (en entrant manuellement les valeurs) combien y'a de bonnes valeurs/a la bonne place, et l'IA ressort un chiffre en fonction de ce que j'ai dit
     
  3. pifou92000

    pifou92000 Mineur de Diamants

    Inscrit:
    23 Juin 2011
    Messages:
    2 690
    Points:
    195
    Sexe:
    Homme
    Ah tiens j'ai déjà codé ça.
    Tu as la méthode de bourrin, qui marche assez bien : tu mets tous les nombres possibles dans une liste.
    Tant que la taille de la liste est supérieure à 1 :
    - L'IA propose un nombre au hasard parmi la liste
    - Tu reçois la réponse de l'utilisateur, et tu supprimes de la liste tous les nombres qui sont incompatibles avec cette réponse

    Quand la liste est de taille 1, elle contient la solution.
     
  4. Seblor

    Seblor Responsable de Modération
    Staff

    Inscrit:
    15 Sept 2013
    Messages:
    2 572
    Points:
    195
    Sexe:
    Homme
    Pour les intéressés, j'ai fait le truc en JS (parce que ça ressemble plus à du pseudo code)
    (cc @Nolan-XX & @pifou92000 )


    Code (cpp):
    var solution = [1, 5, 3, 3];
    var MAX = 4;

    var known = null;
    var numbers = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
    var guess, correctGuess = [];


    /**
    * First tests
    */

    for (var number = 0; number <= 9; number++) {
        guess = [number, number, number, number];
        var res = checkGuess(guess);
        numbers[number] = res[0];
        console.log(JSON.stringify(guess) + " => " + JSON.stringify(res));
    }

    console.log(JSON.stringify(numbers));

    var wrongNumber = numbers.indexOf(0); // We need a wrong number to fill the guesses
    for (var numberAsKey in numbers) {
        number = Number(numberAsKey);
        if (numbers[number] != 0) {
            var currentCorrects = 0;
            var countOfGoodNumber = 0;
            do {
                for (var i = 0; i <= countOfGoodNumber; i++) {
                    guess[i] = number
                }
                guess.fill(wrongNumber, countOfGoodNumber);
                var res = checkGuess(guess);
                if (res[0] > currentCorrects) {
                    correctGuess[countOfGoodNumber - 1] = number;
                    currentCorrects++;
                }


                countOfGoodNumber++;
            } while (currentCorrects < numbers[number]);
        }
    }

    console.log("correct guess: " + JSON.stringify(correctGuess));


    function checkGuess(guess) {
        var results = [0, 0, 0];
        for (var i = 0; i < solution.length; i++) {
            if (solution.indexOf(guess[i]) != -1) {
                if (solution[i] == guess[i]) {
                    results[0]++; // Good position
                }
                else {
                    results[1]++; // Wrong position
                }
            }
            else {
                results[2]++; // Wrong number
            }
        }
        return results;
    }


    (ça tourne sur la console JS de Chrome ou avec NodeJS.)

    En fait, je fais les premiers tests pour savoir quels sont les nombres justes et combien il y en a.
    Après, je fais une boucle sur ces nombres, et je commence par tester [nombre juste, mauvais nombre, mauvais nombre, mauvais nombre].
    Et dès que le compte de nombre valide augmente, je sais qu'il est bien placé.
    Puis ça jusqu'à ce que le compte de nombre valide soit égal à celui que j'ai trouvé au début.
    Et je me retrouve avec la bonne solution.
     
  5. tipigeon

    tipigeon That's just like...Your opinion man
    Membre Premium

    Inscrit:
    15 Mai 2012
    Messages:
    4 208
    Points:
    234
    Sexe:
    Homme
    J'espère au moins que dans Mass Effect andromeda on vera enfin des putain de Quariens sans leurs casques :c
     
    • J'approuve J'approuve x 1
  6. Nolan-XX

    Nolan-XX Modérateur
    Staff

    Inscrit:
    29 Déc 2012
    Messages:
    10 243
    Points:
    304
    Sexe:
    Homme
    Dites, c'est moi où Blood and Wine fait 35 Go ?

    J'aimerais bien l'acheter tout de suite, mais avec une suite d’éventement inattendus (consanguins d'SFR), je dois me dépatouiller avec la 4G de mon portable ...
     
  7. Elliotau78

    Elliotau78 Résident du Nether

    Inscrit:
    8 Déc 2012
    Messages:
    4 614
    Points:
    184
    Sexe:
    Homme
    J'éspère surtout pouvoir le faire tourner :'(.
     
    • J'aime J'aime x 1
  8. pifou92000

    pifou92000 Mineur de Diamants

    Inscrit:
    23 Juin 2011
    Messages:
    2 690
    Points:
    195
    Sexe:
    Homme
    @Seblor je pense que ta solution demande beaucoup plus de tentatives que la mienne pour trouver la bonne réponse. Normalement au mastermind, il y a un nombre maximal de propositions, pour éviter ce genre de stratégie. :p
     
  9. Seblor

    Seblor Responsable de Modération
    Staff

    Inscrit:
    15 Sept 2013
    Messages:
    2 572
    Points:
    195
    Sexe:
    Homme
    La solution que demandait @Nolan-XX n'a pas de limite (je lui ai demandé sur Discord), et le nombre maximal de tests au pire des cas est 20, mais je pourrait le faire un peu descendre avec quelques changements dans le code, donc franchement ça va.
     
    • Informatif Informatif x 1
  10. Éva

    Éva Bûcheron

    Inscrit:
    22 Juil 2016
    Messages:
    196
    Points:
    56
    Sexe:
    Femme
    Czqi04SXUAA-jNC.jpg

    Comment vont ?
     
    • J'aime J'aime x 2
    • Gagnant Gagnant x 1
  11. tipigeon

    tipigeon That's just like...Your opinion man
    Membre Premium

    Inscrit:
    15 Mai 2012
    Messages:
    4 208
    Points:
    234
    Sexe:
    Homme
    Demain partiel de grec ancien et ce week end nationales 2 et après je serais en vacances x_X
    Et je viens de me niquer l'orteil dans l'escalier putain
     
    • J'aime J'aime x 1
  12. pifou92000

    pifou92000 Mineur de Diamants

    Inscrit:
    23 Juin 2011
    Messages:
    2 690
    Points:
    195
    Sexe:
    Homme
    Ah merde, tu as toujours du grec ancien dans les études supérieures ? x)
     
  13. tipigeon

    tipigeon That's just like...Your opinion man
    Membre Premium

    Inscrit:
    15 Mai 2012
    Messages:
    4 208
    Points:
    234
    Sexe:
    Homme
    Vue que je veux faire de l'archéologie sous marine c'est une option qui me disais, mais bon clairement je vais pas la prendre au deuxième semestre xD
     
    • J'aime J'aime x 1
  14. Kayase

    Kayase Furie Nocturne

    Inscrit:
    27 Mar 2014
    Messages:
    6 892
    Points:
    229
    Sexe:
    Homme
    Sinon hier j'ai essayé de rentrer dans l'ancien hôpital en destruction en face de mon lycée. J'était entrain de grimper sur le toit du vieux parking pour voir si il y avait une entrée pour les parkings souterrain. Et la j'ai mon pote que j'ai laissé entrain de draguer son ex qui court vers moi en disant : "c'est interdit ! c'est interdit !" et en fait y'avait un flic qui allait me coffrer parce que j'étais sur un terrain interdit.

    MAIS BORDEL FAUT METTRE UN PANNEAU ET FERMER LE PORTAIL SI TU VEUX PAS QUE JE RENTRE !
    A c'qui parait l’hôpital était en pleine déconstruction parce qu'il était bourrer d'amiante. Wallah.
    C'tait marrant.
     
    • Gagnant Gagnant x 1
  15. Redz

    Redz Résident de l'End

    Inscrit:
    7 Sept 2014
    Messages:
    5 279
    Points:
    239
    En face d'un lycée en plus xD
     

Partager cette page