C# :: Aufgabe #12 :: Lösung #1
8 Lösungen

#12
Zahlenfolge berechnen und fortsetzen
Anfänger - C#
von pocki
- 24.11.2012 um 19:50 Uhr
Es soll eine Zahlenfolge wiefolgt berechnet werden:
Die nacheinander folgenden gleichen Zahlen werden gezählt und zusammen mit der Zahl ausgegeben.
Aus der neu berechneten Zahlenfolge errechnet sich die nächste.
Beispiel:
1. Folge: 112
2. Folge: 2112 (2 Einser und 1 Zweier)
3. Folge: 122112 (1 Zweier, 2 Einser, und 1 Zweier)
usw.
Es soll nun mit dieser ersten Folge startend die 15. Folge berechnet und ausgegeben werden.
Wenn mehrstellige Zahlen vorkommen sind diese gleich auszugeben. Bsp: 12 Einser = 121
Die nacheinander folgenden gleichen Zahlen werden gezählt und zusammen mit der Zahl ausgegeben.
Aus der neu berechneten Zahlenfolge errechnet sich die nächste.
Beispiel:
1. Folge: 112
2. Folge: 2112 (2 Einser und 1 Zweier)
3. Folge: 122112 (1 Zweier, 2 Einser, und 1 Zweier)
usw.
Es soll nun mit dieser ersten Folge startend die 15. Folge berechnet und ausgegeben werden.
Wenn mehrstellige Zahlen vorkommen sind diese gleich auszugeben. Bsp: 12 Einser = 121
#1

von pocki (4190 Punkte)
- 24.11.2012 um 21:02 Uhr
Hier ist meine Lösung:
Startfolge und Anzahl der Folgen kann einfach geändert werden.
C#-Code
Startfolge und Anzahl der Folgen kann einfach geändert werden.

using System; using System.Collections.Generic; using System.Linq; namespace UE12 { class Program { private static void Main() { const string first = "112"; const int sequences = 15; List<string> rows = new List<string> { first }; Console.WriteLine("Die Startfolge lautet: {0}", first); for (int i = 0; i < sequences; i++) { string s = CalculateRow(rows[i]); rows.Add(s); } Console.WriteLine("Die {0}. Folge lautet: {1}", sequences, rows[sequences-1]); Console.ReadKey(); } /// <summary> /// Berechnet eine neue Folge aus der übergebenen. /// </summary> /// <param name="row">Ausgangsfolge</param> /// <returns>neu berechnete Folge</returns> private static string CalculateRow(string row) { string newRow = string.Empty; //Folge in integer Liste zerlegen IEnumerable<int> numbers = row.ToCharArray().Select(x => int.Parse(x.ToString())); int last = numbers.First(); int count = 0; //Jede Zahl wird mit vorheriger verglichen. foreach (var number in numbers) { if (number == last) { count++; } else { //bei Unterschied werden Werte zur neuen Folge hinzugefügt newRow += count.ToString() + last.ToString(); last = number; count = 1; } } newRow += count.ToString() + last.ToString(); return newRow; } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1