1. Le forum de Minecraft-France va définitivement fermer ses portes. Celui-ci restera en lecture seule mais vous ne pourrez plus y apporter de nouveaux topics. Nous vous invitons à nous rejoindre sur le Discord de Minecraft-France qui permet de présenter vos projets, discuter avec la communauté etc.. Merci à tous d'avoir fait vivre ce forum de nombreuses années. Pour nous rejoindre sur Discord, Cliquez ici

Floodatorium

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

  1. SpookyPowa

    SpookyPowa Rédacteur en Chef
    Staff

    Inscrit:
    26 Mai 2013
    Messages:
    7 478
    Points:
    259
    Sexe:
    Homme
    Mes bonnes résolutions : tout faire pour ne pas aller aux rattrapages. o/
     
    • J'aime J'aime x 2
    • Amusant Amusant x 1
  2. Dracoctix

    Dracoctix Rédacteur en Chef
    Staff

    Inscrit:
    15 Mai 2013
    Messages:
    5 251
    Points:
    239
    Sexe:
    Homme
    La mienne : tout faire pour ne pas devoir y aller (dans un sens comme dans l'autre)
     
  3. Kayase

    Kayase Furie Nocturne

    Inscrit:
    27 Mar 2014
    Messages:
    6 892
    Points:
    239
    Sexe:
    Femme
    Tiens petite question :
    On est bien d'accord, l'air marin c'est bien sensé sentir le sel, et pas le charbon de bois ? Nan parce que depuis des années quand j'ouvre la fenêtre de ma chambre le soir ça pue l'charbon, du coup j'me demande.
     
  4. Nolan-XX

    Nolan-XX Modérateur
    Staff

    Inscrit:
    29 Déc 2012
    Messages:
    10 231
    Points:
    304
    Sexe:
    Homme
    Ma résolution c'est de rendre mon humour encore plus noir qu'il n'y est déjà.
    Et de devenir le meilleur joueur d'Isaac de ma fac. Croyez moi, y'a du boulot (dans la salle où y'a des PC en libre disposition, le midi, c'est 75% de joueurs d'Isaac)
     
  5. Pumafi

    Pumafi Champion d'Odin

    Inscrit:
    24 Nov 2012
    Messages:
    4 221
    Points:
    214
    Sexe:
    Homme

    i_know_that_feel_bro_by_rober_raik-d4cxn5a.png
     
    • J'aime J'aime x 1
  6. SpookyPowa

    SpookyPowa Rédacteur en Chef
    Staff

    Inscrit:
    26 Mai 2013
    Messages:
    7 478
    Points:
    259
    Sexe:
    Homme
    Tu es sûr qu'il n'y a pas d'usines à côté ?
     
  7. tipigeon

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

    Inscrit:
    15 Mai 2012
    Messages:
    4 208
    Points:
    234
    Sexe:
    Homme
    Quand y a des mecs qui pleurent en PLS d'habitude c'est pas qu'ils jouent à BoI mais qu'ils viennent de sortir de partiels o/
     
  8. Malaysia

    Malaysia Mineur de Fer

    Inscrit:
    18 Juil 2016
    Messages:
    505
    Points:
    86
    Sexe:
    Homme
    C'est les reptiliens qui ont ouvert une usine sous-marine pour créer des soucoupes volantes à livrer à Tromp.

    Et ma bonne résolution est simple : bosser 1 ou 2 mois, et passer le reste de l'année au chômage et au repos.
     
    • J'aime J'aime x 2
    • J'approuve J'approuve x 1
  9. Nolan-XX

    Nolan-XX Modérateur
    Staff

    Inscrit:
    29 Déc 2012
    Messages:
    10 231
    Points:
    304
    Sexe:
    Homme
    les doués en java (genre @Seblor) j'ai besoin de votre aide pour un DM en info (en fait, mon problème relève plus de logique que de programmation).

    On doit programmer un mastermind (on entre un chiffre, l'ordinateur en propose un, on dit combien y'a de chiffres bons a la bonne place/bons a la mauvaise place, et l'ordi doit trouver le bon chiffre en le moins de tours possibles), et je n'arrive pas a trouver comment faire pour déterminer quels chiffres sont les bons. J'ai déjà essayé en isolant les chiffres du nombre dans des tableaux, mais ça ne marche que pour certains cas (quand y'a les 4 bons chiffres mais pas dans le bon ordre ...), et sinon je dois prendre un chiffre au hasard parmi les 4, et du coup ça ne sert plus a rien ...

    Merci d'avance ♥

    (mon code btw http://pastebin.com/UZ16Pra8 et ne me répondez pas qu'il est pas organisé avec des variables inutiles sinon je vous ban)
     
  10. Redz

    Redz Résident de l'End

    Inscrit:
    7 Sept 2014
    Messages:
    5 289
    Points:
    249
    j'allais dire un message qui disait que j'étais heureux car quelque chose ne s'est pas produit puis je me suis dit que les gens vont faire la chose just' après que je l'ai dite du coup j'ai effacé le message.

    toujours aussi chiant de s'auto-censurer
    rt
     
    • Gagnant Gagnant x 1
  11. Pumafi

    Pumafi Champion d'Odin

    Inscrit:
    24 Nov 2012
    Messages:
    4 221
    Points:
    214
    Sexe:
    Homme
    Je connais pas le JAVA alors j'ai test en C#.
    Ca marche pas, et j'ai très clairement la flemme d'utiliser le débogueur pour un truc même pas dans le bon langage...
    Donc bonne chance, parce que c'est chiant :D



    Code (cpp):
           static public void masterMind(int x)
            {
                int[] nbr = new int[4] { 0, 0, 0, 0, };
                int[] guess = new int[4] { 0, 0, 0, 0 };
                int[] acc = new int[4] { 0, 0, 0, 0 };
                int n, c, y;
                Random rnd = new Random();
                if (x < 0 || x > 9999)
                    Console.Error.WriteLine("Invalid Argument");
                else
                    nbr = toArray(x, nbr);
                    while (nbr != guess)
                {
                    acc = guess;
                    n = 0;
                    c = 0;
                    while (n < 4)
                    {
                        y = acc[n];
                        if (isPlaced(y, n, nbr))
                        {
                            guess[n] = y;
                            n++;
                        }
                        else if (isPresent(y, nbr))
                        {
                            while (isPlaced(guess[c], c, nbr))
                            {
                                c++;
                            }
                            guess[c] = y;
                            n++;
                        }
                        else
                        {
                            guess[n] = rnd.Next(0, 10);
                            n++;
                        }
                    }
                    Console.WriteLine("Found" + guess[0] + guess[1] + guess[2] + guess[3]));


                }

            }

            static public bool isPlaced(int x, int i, int[] nbr)
            {
                return x == nbr[i];

            }

            static public bool isPresent(int x, int[] nbr)
            {
                int i = 0;
                while ( i < nbr.Length)
                {
                    if (nbr[i] == x)
                        break;
                    i++;
                }
                return nbr[i] == x;
            }

            static public int[] toArray(int x, int[] nbr)
            {
                int i = 3;
                while(i >= 0)
                {
                    nbr[i] = x % 10 ;
                    x /= 10;
                    i--;
                }
                return nbr;
            }
     

    EDIT: Trouvé une erreur, mais flemme de corriger.
     
    #159386 Pumafi, 12 Déc 2016
    Dernière édition: 12 Déc 2016
  12. Seblor

    Seblor Responsable de Modération
    Staff

    Inscrit:
    15 Sept 2013
    Messages:
    2 576
    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.
     
  13. Nolan-XX

    Nolan-XX Modérateur
    Staff

    Inscrit:
    29 Déc 2012
    Messages:
    10 231
    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
     
  14. 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.
     
  15. Seblor

    Seblor Responsable de Modération
    Staff

    Inscrit:
    15 Sept 2013
    Messages:
    2 576
    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.
     

Partager cette page