In immer enger werdenden Kreisen loopen
-
Ich habe eine Matrix bei dem ich in einem Loop jeweils immer den äußersten "Rand" abfragen will, der immer enger wird. Bei einer 4*4-Matrix würden dann z.B. diese Werte herauskommen:
0|0
1|0
2|0
3|0
3|1
3|2
3|3
2|3
1|3
0|3
0|2
0|1
0|0
(Äußere Elemente)
1|1
2|1
2|2
1|2
(Innere Elemente)Wie könnte so eine Schleife aussehen, die auch nicht-quadratische Matrizen handeln kann?
-
Die äußeren Elemente sind doch:
1. Zeile also [0][0-zeilenlänge]
Letzte Zeile also [spaltenlänge][0-zeilenlänge]
Linker Rand also [1-(spaltenlänge-1)][0]
Rechter Rand also [1-(spaltenlänge-1)][zeilenlänge]Zeilen und spaltenlänge sollten natürlich Index-getreu verstanden werden (4 Elemente -> 3 ist die Länge (oder du baust halt noch -1 ein))
Enger werden bedeutet dann, dass sich die jeweiligen werde reduzieren. Je nachdem wie du dein Array tatsächlich veränderst müsstet du natürlich eventuell für die 1. Zeile noch den linken Index hochzählen.