Lateinisches Quadrat in java?

... komplette Frage anzeigen

2 Antworten

Deine Basis wird eine 2D Array sein. z.B. so: (die feste Größe von 3 kannst du natürlich flexibel halten)

int[][] quadrat = new int[3][3];

entsprechend solltest du nun deine Array durchlaufen.

Du nimmst dann deinen Basiswert 1 und prüfst: Ist dieser Wert in Zeile und Spalte bereits enthalten ist. Wenn ja: Schreibst du ihn in die Zelle, wenn nicht, erhöhst du den Wert und zählst um eins nach oben und prüfst erneut, etc.

Antwort bewerten Vielen Dank für Deine Bewertung

Du weißt ja, dass jede Zeile mit dem Wert der Spalte anfängt, also der erste Wert von Zeile 3 ist 3, der zweite wert ist 4 usw. Und du musst aufpassen, dass der Wert nicht größer als die Größe des Quadrates wird.

Eine Möglichkeit um den Wert des Elements an der aktuellen Stelle herauszufinden kannst du dich der folgenden Formel bedienen:

val = ((x+y)%count) + 1;

Wobei x die Zeile, y die Spalte (jeweils mit 0 beginnend) und count die Größe des Quadrates.

Sprich bei einen 10x10 Quadrat wäre das erste Element der 5. Zeile an (0|4). Mit der Formel kommst du also auf (0+4)%10+1 = 5. Für das 8. Element der gleichen Spalte wird es spannender wenn der Modulo (das %, der Divisionsrest) zum einsatz kommt:
(7+4)%10+1 = 1+1 =2.

Antwort bewerten Vielen Dank für Deine Bewertung