Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » [AIDE] Qui pourrais me proposez sa solution
Corpse Hors ligne Banni Points: 31 Défis: 0 Message

[AIDE] Qui pourrais me proposez sa solution

Posté le 18/07/2015 12:25

Voici l'enonce http://hbzone.fr/42/colle01.pdf


Totoyo Hors ligne Membre d'honneur Points: 16065 Défis: 102 Message

Citer : Posté le 18/07/2015 12:31 | #


Le fichier est erroné, je n'arrive pas l'ouvrir.
Quelles pistes as-tu déjà exploré pour résoudre ce problème ? Quelle(s) difficulté(s) as-tu rencontrée(s) ?
Ainsi, la communauté aura davantage envie de te répondre, sans avoir l'impression de te mâcher le boulot
Guil_2000 Hors ligne Membre Points: 315 Défis: 8 Message

Citer : Posté le 18/07/2015 12:33 | # | Fichier joint


Je mets une image du sujet

Mes programmes
Cliquer pour enrouler
Mon projet
Cliquer pour enrouler

Corpse Hors ligne Banni Points: 31 Défis: 0 Message

Citer : Posté le 18/07/2015 12:35 | #


le fichier est pas eronne, le but de l'exercice est de creer un resolver de sudoku et j'y arrive pas
Guil_2000 Hors ligne Membre Points: 315 Défis: 8 Message

Citer : Posté le 18/07/2015 12:35 | #


(si vous vous posez la question, le chapitre I parle d'un projet en groupe, et le chapitre II des koalas)
(non, ce n'est pas une plaisanterie)
Mes programmes
Cliquer pour enrouler
Mon projet
Cliquer pour enrouler

Ne0tux Hors ligne Membre d'honneur Points: 3505 Défis: 265 Message

Citer : Posté le 18/07/2015 12:41 | #


[AIDE] Qui pourrait (Avec un "T", pas un "S") me proposer (avec un "R" pas un "Z") sa solution :

Voici l'énoncé https://fr.wikipedia.org/wiki/Probl%C3%A8me_P_%3D_NP

Ajouté le 18/07/2015 à 12:43 :
Non mais sans blague, ce n'est pas parce que la communauté en présence est hautement philanthropique qu'il faut en abuser comme ça !

Pas de bonjour, pas de s'il vous plait, pas de précision sur le travail réalisé/les difficultés rencontrées...
Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Guil_2000 Hors ligne Membre Points: 315 Défis: 8 Message

Citer : Posté le 18/07/2015 12:51 | #


C'est vrai qu'on n'est pas là pour répondre automatiquement...
Corpse a écrit :
Le but de l'exercice est de creer un resolver (résolveur) de sudoku et j'y arrive pas

Tu pourrais être plus précis? Pourquoi tu n'y arrives pas ?
T'as essayé plusieurs fois au moins au lieu d'abandonner à la première tentative ?
Mes programmes
Cliquer pour enrouler
Mon projet
Cliquer pour enrouler

Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

Citer : Posté le 18/07/2015 13:33 | #


Voici un lien vers un programme du même genre : http://www.planet-casio.com/Fr/forums/topic12010-1-Resolveur-de-Sudoku.html
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Corpse Hors ligne Banni Points: 31 Défis: 0 Message

Citer : Posté le 18/07/2015 18:24 | #


Mon main.c

#include <unistd.h>

int            ft_parse_sudoku_table(int pos[9][9], char **argv);

int            ft_print_sudoku(int pos[9][9]);

void        ft_set_pos(int *pos, int *orig, int i, int check);

int            ft_check_square(int pos[9][9], int x, int y, int nbr)
{
    int        xmin;
    int        xmax;
    int        ymin;
    int        ymax;
    int        i;

    xmin = (x / 3) * 3;
    xmax = xmin + 3;
    ymin = (y / 3) * 3;
    ymax = ymin + 3;
    while (xmin < xmax)
    {
        i = ymin;
        while (i < ymax)
        {
            if (i != y && xmin != x && pos[i][xmin] == nbr)
                return (0);
            i++;
        }
        xmin++;
    }
    return (1);
}

int            ft_check_pos(int pos[9][9], int x, int y, int nbr)
{
    int        i;

    i = 0;
    while (i < 9)
    {
        if (i != x && pos[y][i] == nbr)
            return (0);
        i++;
    }
    i = 0;
    while (i < 9)
    {
        if (i != y && pos[i][x] == nbr)
            return (0);
        i++;
    }
    i = ft_check_square(pos, x, y, nbr);
    return (i);
}

void        ft_put_last_nr(int pos[9][9], int nr, int *check)
{
    if (ft_check_pos(pos, 8, 8, nr))
    {
        if (pos[8][8] == 0)
            pos[8][8] = nr;
        *check = *check + 1;
    }
}

void        ft_solve(int pos[9][9], int val, int orig[9][9], int *check)
{
    int        i;
    int        x;
    int        y;

    x = val % 9;
    y = val / 9;
    if (pos[y][x] != 0 && (x != 8 || y != 8) && *check < 2)
        ft_solve(pos, val + 1, orig, check);
    i = 1;
    while (i < 10 && *check < 2)
    {
        if (x != 8 || y != 8)
        {
            if (ft_check_pos(pos, x, y, i) && pos[y][x] == 0)
            {
                ft_set_pos(&pos[y][x], &orig[y][x], i, *check);
                ft_solve(pos, val + 1, orig, check);
                pos[y][x] = 0;
            }
        }
        else
            ft_put_last_nr(orig, i, check);
        i++;
    }
}

int            main(int argc, char **argv)
{
    int        pos[9][9];
    int        orig[9][9];
    int        check;
    int        *ptr_check;

    check = 0;
    ptr_check = &check;
    if (argc == 10)
    {
        ft_parse_sudoku_table(orig, &argv[1]);
        if (ft_parse_sudoku_table(pos, &argv[1]))
        {
            ft_solve(pos, 0, orig, ptr_check);
            if (check == 1)
                ft_print_sudoku(orig);
            else
                write(1, "Erreur\n", 7);
        }
        else
            write(1, "Erreur\n", 7);
    }
    return (0);
}


fonction.c

#include <unistd.h>

void        ft_putchar(char c)
{
    write(1, &c, 1);
}

int            ft_parse_sudoku_table(int pos[9][9], char **argv)
{
    int        ix;
    int        iy;

    iy = 0;
    while (iy < 9)
    {
        ix = 0;
        while (ix < 9)
        {
            if (argv[iy][ix] >= '0' && argv[iy][ix] <= '9')
                pos[iy][ix] = argv[iy][ix] - '0';
            else if (argv[iy][ix] == '.')
                pos[iy][ix] = 0;
            else
                return (0);
            ix++;
        }
        if (argv[iy][ix])
            return (0);
        iy++;
    }
    return (1);
}

void        ft_print_sudoku(int pos[9][9])
{
    int        i;
    int        j;

    i = 0;
    while (i < 9)
    {
        j = 0;
        while (j < 9)
        {
            ft_putchar(pos[i][j] + 48);
            if (j != 8)
                ft_putchar(' ');
            j++;
        }
        ft_putchar('\n');
        i++;
    }
}

void        ft_set_pos(int *pos, int *orig, int i, int check)
{
    *pos = i;
    if (check == 0)
        *orig = i;
}


fonction.h

#include <unistd.h>

int            ft_parse_sudoku_table(int pos[9][9], char **argv);

int            ft_print_sudoku(int pos[9][9]);

void        ft_set_pos(int *pos, int *orig, int i, int check);


est-ce que ya plus court que sa ou pas ?
Silaxe Hors ligne Membre Points: 809 Défis: 12 Message

Citer : Posté le 18/07/2015 18:26 | #


A quoi correspond le smiley dans le code ?
Corpse Hors ligne Banni Points: 31 Défis: 0 Message

Citer : Posté le 18/07/2015 18:29 | #


a un 8 collé a une parenthese
Lephenixnoir En ligne Administrateur Points: 22755 Défis: 149 Message

Citer : Posté le 18/07/2015 21:29 | #


Ne0tux a écrit :
Non mais sans blague, ce n'est pas parce que la communauté en présence est hautement philanthropique qu'il faut en abuser comme ça !

Pas de bonjour, pas de s'il vous plait, pas de précision sur le travail réalisé/les difficultés rencontrées...

Bon, je vais être chiant parce que je suis d'accord mais le solver de base fonctionne comme suit :
→ Tester toutes les cases de la grille
→ Éliminer, pour chaque case, les chiffre présents sur la même ligne, la même colonne, et dans le même carré
→ S'il ne reste plus qu'un chiffre, le mettre dans la grille
→ Continuer à parcourir la grille jusqu'à ce que le sudoku soit résolu ou qu'on n'ait plus rien pu calculer

Je l'ai programmé en Basic il y a un bout de temps, franchement, y'a pas de quoi s'arracher les cheveux.

Par contre Corpse, c'est à toi de faire l'exercice : on peut discuter ta solution, proposer des améliorations etc., mais pas faire le travail à ta place : autant regarder une correction, tu seras tout aussi avancé et ça ira plus vite.
Corpse Hors ligne Banni Points: 31 Défis: 0 Message

Citer : Posté le 18/07/2015 23:11 | #


j'ai fais mon programme j'aimerais savoir quoi changer ect
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

Citer : Posté le 19/07/2015 00:01 | #


Est-ce qu'il fonctionne ? On peut avoir des tests ? Si ça marche pas, à quel endroit ça buggue ? Ça compile au moins ?
Si tu veux que l'on puisse t'aider efficacement, il faut nous fournir plus que du code
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Totoyo Hors ligne Membre d'honneur Points: 16065 Défis: 102 Message
Lephenixnoir En ligne Administrateur Points: 22755 Défis: 149 Message

Citer : Posté le 21/07/2015 09:46 | #


4 messages nettoyés.

Concentrez-vous sur le sujet.

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2022 | Il y a 50 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd