C# :: Aufgabe #354
2 Lösungen

Matrix mal anders - rückwärts auslesen
Anfänger - C#
von JKooP
- 13.02.2021 um 11:22 Uhr
Gegeben ist eine beliebig große quadratische Zeichenmatrix im Format char[ ][ ],
die alle Größen bis auf 0x0 annehmen kann.
Das heißt, die horizontale und vertikale Größe sind gleich.
Ziel ist es, nicht wie gewohnt die Matrix von oben nach unten und von links nach rechts auszulesen,
sondern umgekehrt von unten nach oben und von rechts nach links.
Die ausgelesenen Zeichen sollen zu einem String zusammengefasst werden.
Beispiel für eine 3x3-Matrix: siehe Grafik 3x3_matrix
char [ ][ ] matrix = [ [ 'R', 'E', 'B' ], [ 'M', 'E', 'T' ], [ 'P', 'E', 'S' ] ]
Lösung: SEPTEMBER
Beispiel für eine 4x4- Matrix: siehe Grafik 4x4_matrix
char [ ][ ] matrix = [ [ 'N', 'I', 'L', 'O' ], [ 'R', 'A', 'C', 'T' ], [ 'B', 'E', 'I', 'L' ], [ 'S', 'N', 'A', 'H' ] ]
Lösung: HANSLIEBTCAROLIN
Erstelle hierzu eine Methode/Funktion, mit der man zum oben beschriebenen Ziel kommt.
die alle Größen bis auf 0x0 annehmen kann.
Das heißt, die horizontale und vertikale Größe sind gleich.
Ziel ist es, nicht wie gewohnt die Matrix von oben nach unten und von links nach rechts auszulesen,
sondern umgekehrt von unten nach oben und von rechts nach links.
Die ausgelesenen Zeichen sollen zu einem String zusammengefasst werden.
Beispiel für eine 3x3-Matrix: siehe Grafik 3x3_matrix
char [ ][ ] matrix = [ [ 'R', 'E', 'B' ], [ 'M', 'E', 'T' ], [ 'P', 'E', 'S' ] ]
Lösung: SEPTEMBER
Beispiel für eine 4x4- Matrix: siehe Grafik 4x4_matrix
char [ ][ ] matrix = [ [ 'N', 'I', 'L', 'O' ], [ 'R', 'A', 'C', 'T' ], [ 'B', 'E', 'I', 'L' ], [ 'S', 'N', 'A', 'H' ] ]
Lösung: HANSLIEBTCAROLIN
Erstelle hierzu eine Methode/Funktion, mit der man zum oben beschriebenen Ziel kommt.
Lösungen:

using System; using System.Text; namespace ArrayMatrixRueckwaerts { internal class Program { static void Main(string[] args) { char[,] matrix = new char[,] { { 'R', 'E', 'B' }, { 'M', 'E', 'T' }, { 'P', 'E', 'S' } }; //char[,] matrix = new char[,] { { 'N', 'I', 'L', 'O' }, { 'R', 'A', 'C', 'T' }, { 'B', 'E', 'I', 'L' }, { 'S', 'N', 'A', 'H' } }; StringBuilder sb = GetMyWords(matrix); Console.WriteLine($"result: {sb}"); } private static StringBuilder GetMyWords(char[,] matrix) { StringBuilder sb = new StringBuilder(); int maxIndex = (int)Math.Sqrt(matrix.Length) - 1; for (int i = maxIndex; i >= 0; i--) { for (int j = maxIndex; j >= 0; j--) { sb.Append(matrix[i, j]); } } return sb; } } }
NET 5.x; C# 9.x; VS-2019
C#-Code

using System.Linq; var m = new char[][] { new char[] { 'R', 'E', 'B' }, new char[] { 'M', 'E', 'T' }, new char[] { 'P', 'E', 'S' } }; System.Console.WriteLine(string.Join("", m.SelectMany(x => x).Reverse()));