Hallo erstmal.... und c++ code in Mathematica??



  • hallo allerseits,

    leider bin ich des C++ coden nicht so wirklich mächtig (nur basics) und in Mathematica total der Versager 😉

    trotzdem möchte ich eine Hausarbeit abgeben in der ich in Mathematica einen Sudokusolver programmieren muss

    da mathematica ja auch c++ befehle annimmt dachte ich mir ... nimmst einfach nen c++ code... denkste

    kann mir jemand helfen dieses kunststück zu vollenden??

    hier der code

    ------------------
    #include <iostream>
    using namespace std;

    int start[9][9] =
    {
    { 0, 0, 6, 9, 0, 4, 7, 0, 1 },
    { 3, 1, 9, 0, 2, 0, 0, 0, 0 },
    { 0, 0, 0, 1, 5, 0, 0, 6, 2 },
    { 2, 0, 4, 0, 0, 0, 5, 0, 9 },
    { 7, 6, 0, 4, 0, 0, 0, 2, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 4 },
    { 0, 8, 0, 0, 0, 7, 0, 4, 0 },
    { 0, 0, 0, 0, 0, 8, 0, 9, 5 },
    { 0, 0, 2, 0, 0, 0, 3, 0, 0 }
    };

    bool isfine(int feld[9][9], int x, int y)
    {
    // doppelte Zahl in Zeile oder Spalte?
    for (int yi = 0; yi < 9; yi++)
    if (yi != y && feld[x][yi] == feld[x][y])
    return false;
    for (int xi = 0; xi < 9; xi++)
    if (xi != x && feld[xi][y] == feld[x][y])
    return false;

    // Neuner-Kästchen-Test
    int x1 = (x / 3) * 3;
    int y1 = (y / 3) * 3;
    for (int xk = x1; xk < x1 + 3; xk++)
    for (int yk = y1; yk < y1 + 3; yk++)
    if ((xk != x || yk != y) && feld[xk][yk] == feld[x][y])
    return false;

    return true;
    }

    bool nextone(int feld[9][9], int x, int y)
    {
    if (y == 9) { y = 0; x++; };
    if (x == 9) return true;

    if (feld[x][y] > 0)
    {
    if (!isfine(feld, x, y)) return false;
    return nextone(feld, x, y + 1);
    }
    else for (feld[x][y] = 1; feld[x][y] <= 9; feld[x][y]++)
    {
    if (!isfine(feld, x, y)) continue;
    if (nextone(feld, x, y + 1)) return true;
    }
    feld[x][y] = 0;
    return false;
    };

    int main(int argc, char **argv)
    {
    if (nextone(start, 0, 0))
    {
    for (int x = 0; x < 9; x++)
    {
    for (int y = 0; y < 9; y++)
    cout << start[x][y];
    cout << endl;
    }
    }
    else
    cout << "Dieses Rätsel ist nicht lösbar!" << endl;

    getchar();
    return 0;
    }
    -----------------

    im c++ compiler funktioniert das bestens...

    aber wie bringt man sowas in Wolframs Mathematica zum laufen??

    wäre für Hilfe dankbar

    edit: andere lösungen/codes in mathematica die den selben zweck erfüllen sind mir natürlich auch recht 😉😋

    Mfg



  • Dieser Thread wurde von Moderator/in Jester aus dem Forum Mathematik in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • http://reference.wolfram.com/mathematica/guide/CLanguageInterface.html

    ich glaube aber nicht das dein lehrer damit zufrieden ist, wenn du aus mathematica einfach eine c++ library aufrufst. so schwierig ist es nicht das in mathematica umzusetzen, versuch es doch erstmal und frag wieder wenn du es nicht hinbekommst und konkrete fragen zu mathematica hast.



  • hmm... also soweit ich das verstanden habe können wir c++ benutzen

    als tipp steht inder aufgabe

    "wichtige mathematica-befehle: integer, Table, random, if, for, deletecases, do, append, print

    wie gesagt.... in mathematica bin ich ne totale niete... und eiegntlcih werde ich es auch nach dieser hausarbeit nicht mehr brauchen..

    deswegen wäre ich für lösungswege sehr dankbar

    :xmas1:

    edit: "sudokusolve" dürfen wir leider net benutzten 😉 ....

    edit2: genau DIESEN code in mathematica einfügen wollte ich eigentlich net... ich dachte eigentlich das man in mathematica mit kleineren änderungen ein normales notebook daraus machen kann 😕



  • skalar schrieb:

    ich dachte eigentlich das man in mathematica mit kleineren änderungen ein normales notebook daraus machen kann 😕

    ja dann auf! eine liste der befehle die du dafür brauchst hast du ja schon. mathematica hat eine wirklich gute doku, wenn du dich dort eingearbeitet hättest und sofort angefangen hättest, anstatt dich in mehreren foren (http://www.matheraum.de/read?t=339972) anzumelden und zu fragen ob jemand für dich deine hausaufgaben macht, wärst du schon fertig.


Anmelden zum Antworten