Rekursiver Algorithmus benötigt

Pezi

Grünschnabel
Hallo Community

ich benötige ganz dringend für ein Projekt eine Rekursion. Ich hoffe Ihr könnt mir weiter helfen!
Zum Problem:
Ich habe ein Array, in dem ich Zellen speichere, die einmal in einem square ihre reihe und spalte haben. Desweiteren haben die squares auch wieder eine bestimmte reihe und spalte, welche die Zellen aber auch als information bekommen sollen. Somit weis jede Zelle zu welchem Square sie gehört, und in diesem, an welcher position sie sich befindet.

Ich habe inmal schon versucht, aber folgender code funktioniert nicht wie ich es will.
Code:
    var column=0;
    var row=0;
    var riddleSquareColumn=0;
    var riddleSquareRow=0;
    var squareVertical=3;
    var squareHorizontal=3;
    var cellVertical=10;
    var cellHorizontal = 10;

    for(var i=0;i<riddleArray.length;i++)
    {
        for(var m=0;m<squareVertical;m++)
        {
            for(var l=0;l<squareHorizontal;l++)
            {
                for(var j=0; j<cellVertical; j++)
                {
                    for(var k=0;k<cellHorizontal;k++)
                    {
                        riddleArray[i] = new Cell(column, row, riddleSquareColumn, riddleSquareRow);
                        row++;
                    }
                    row=0;
                    column++;
                }
                riddleSquareColumn++;
                column=0;
            } 
            riddleSquareRow++;
        }
    }

weiterhin eine grafik, die evtl das problem besser verdeutlicht.

vielen dank schon jetzt für eure Hilfe
 

Anhänge

  • Grid-Position.jpg
    Grid-Position.jpg
    101,6 KB · Aufrufe: 18
Hey,

also das Ziel ist, dass die Zellen die ich erstellen will wissen, in welchem Square sie sich befinden (squareRow und squareColumn) und dann auch noch in welcher reihe und spalte in dem square.
Da es ein großes array werden soll, wär es sehr umständlich, das per hand zu schreiben.

hier mal ein beispiel:
array[0] = squareRow=0; squareColumn=0; row=0; column=0;
array[56] = squareRow=0; squareColumn=2; row=1; column=1;
array[113] = squareRow=1; squareColumn=1; row=2; column=3;
array[223] = squareRow=2; squareColumn=2; row=4; column=3;

sozusagen wird ein square mit 25 zellen befüllt, dann kommt das nächste.

ist das verständlich?

gruß
 
Hi,

also für eine rekursive Lösung kann ich einen Ansatz finden, nur eine vereinfachte Form durch das Auslagern in Methoden:

Java:
/**
 * Füllt einen Square in dem Feld.
 * 
 * @param base  Der erste Wert in dem Feld (z.B.: 0, 25, 50, 75...)
 * @param arr   Das Array in dem das Feld gespeichert werden soll
 * @param sqCol Die x-Position des Squares, welches gefüllt wird
 * @param sqRow Die y-Position des Squares
*/
private void fillSquare(Cell[] arr, int base, int sqCol, int sqRow) {
  /* 25 Felder erstellen */
  for(int i=0; i<25; i++) {
    arr[base + i] = new Cell(
        i%5,      /* die Spalte des Feldes in dem Square */
        i/5,      /* die Zeile des Feldes in dem Square */
        sqCol,    /* die Spalte des Squares im Bezug auf das Feld */
        sqRow     /* die Zeile des Squares im Bezug auf das Feld */
    );
  }
}

/**
 * Erstellt das komplette Feld, bestehend aus 3x3 Squares die jeweils
 * 5x5 Felder groß sind.
*/
private Cell[] createAll() {
  /* Das Feld */
  Cell[] riddleArray = new Cell[225];
  
  /* 3x3 Squares erstellen */
  for(int i=0; i<9; i++) {
    fillSquare(
        riddleArray,  /* das feld */
        i*25,         /* der index der erstenn zelle in dem square (0, 25, 50...) */
        i%3,          /* die spalte in dem square */
        i/3           /* die zeile in dem square */
    );
  }
  
  return riddleArray;
}

Angabe ohne Gewähr, nicht getestet...

Bitte halte dich an die Netiquette, vorallem Punkt 15.


Edit: Uups, da hab ich mich wohl verlesen, dachte es geht um Java... Hmm, ich lass den Codeschnipsel mal so stehen, vielleicht hilft er dir ja als Denkanstoß :)

Gruß
BK
 
Zuletzt bearbeitet:
Vielen Dank erst mal für die Antwort Bratkartoffel, ich weis nur nicht genau, ob man das so in JS umsetzen kann. Ich bin jetzt nicht so der JS-Coder aber werde es auf jedenfall probieren.
Für eventuelle weitere Hilfe wär ich trotzdem dankbar.

Gruß
 

Neue Beiträge

Zurück