Mehrdimensionales array, größere zahlen von innen nach außen

F.S.WhiTeY

Bekanntes Mitglied
Hey Leuts,

ich tüftel gerade an einer bestimmten aufgabe. Ich will von einem bestimmten punkt aus in einem 2-dim-Array immer höherwertige "Quadrate" ziehen.

Also wenn ich einen punkt habe den ich bezeichne, z.B. mit S dann soll das so aussehen:

4 4 4 4 4 4 4 4 4
4 3 3 3 3 3 3 3 4
4 3 2 2 2 2 2 3 4
4 3 2 1 1 1 2 3 4
4 3 2 1 S 1 2 3 4
4 3 2 1 1 1 2 3 4
4 3 2 2 2 2 2 3 4
4 3 3 3 3 3 3 3 4
4 4 4 4 4 4 4 4 4

Das soll aber auch klappen, wenn ich nicht genau in der mitte bin oder es keine N x N Matrix ist.

also sowas sollte auch gehen:

6 6 6 6 6 6 6 6 6 6 6 7
5 5 5 5 5 5 5 5 5 5 6 7
4 4 4 4 4 4 4 4 4 5 6 7
4 3 3 3 3 3 3 3 4 5 6 7
4 3 2 2 2 2 2 3 4 5 6 7
4 3 2 1 1 1 2 3 4 5 6 7
4 3 2 1 S 1 2 3 4 5 6 7
4 3 2 1 1 1 2 3 4 5 6 7
4 3 2 2 2 2 2 3 4 5 6 7
4 3 3 3 3 3 3 3 4 5 6 7
4 4 4 4 4 4 4 4 4 5 6 7

Ich habe derzeit leider nur recht "minderwertige" Ansätze. So weiß ich, wie ich vom startpunkt aus nach rechts, links, oben unten, schräk rechts oben, schräk rechts unten, schräg links oben und schräk links unten gehen kann um da die zahlen einzutragen.

Das sähe dann so aus:

edit: das wird nicht angezeigt : \

4 4 4
3 3 3
2 2 2
1 1 1
4 3 2 1 S 1 2 3 4
1 1 1
2 2 2
3 3 3
4 4 4


Nur wie ich nun den rest befüllen soll will mir nicht einfallen.

Hat jemand eine idee wie man das machen kann ?


Das was ich bis jetzt rausgefunden habe kann man so umsetzen:

für jeden weiteren schritt:

Schräk links oben : [+1][-1]
Schräk links unten :[-1][-1]

Schräk rechts oben :[+1][+1]
Schräk rechts unten : [-1][+1]

links : [bleibt][-1]
rechts: [bleibt][+1]

oben : [-1][bleibt]
unten :[+1][bleibt]
 
Zuletzt bearbeitet:
1. schräg
2. ist das eigentlich ziemlich primitiv, darum verrat ich nicht wie's geht. Aber rechne einfach mal die Beziehung zwischen dem gesuchten beliebigen Punkt (x, y) und dem Startpunkt (sx, sy) aus, anstatt dich an "schräg oben links, x += 1, y -= 1" aufzuhängen.
 
mhnnnnn so...

Java:
public class Quadrat {

	
	public static void main(String[] args) {
		int size = 10;
		
		int x = 2; 
		int y =8;
		
		int arr[][] = new int[size][size];
		
		
		for(int i =0; i < arr.length; i++){
			for(int j = 0; j < arr[i].length; j++){
				int abstand = Math.max(Math.abs(y-i), Math.abs(x-j));
				arr[i][j] = abstand;
			}
		}
		
		for(int i =0; i < arr.length; i++){
			for(int j = 0; j < arr[i].length; j++){
				System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}
	}
}
 

Neue Themen


Zurück
Oben