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
