C# :: Aufgabe #354

2 Lösungen Lösungen öffentlich

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.

Lösungen:

vote_ok
von Frank (410 Punkte) - 22.02.2021 um 16:34 Uhr
Quellcode ausblenden C#-Code
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;
        }
    }
}
vote_ok
von JKooP (18090 Punkte) - 31.03.2021 um 11:04 Uhr
NET 5.x; C# 9.x; VS-2019
Quellcode ausblenden 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()));