C# :: Aufgabe #381 :: Lösung #2

2 Lösungen Lösungen öffentlich
#381

Binärzahlen ohne zwei aufeinanderfolgende Nullen

Anfänger - C# von hollst - 09.11.2020 um 15:10 Uhr
Erstelle eine Liste der ersten 1.000 Natürlichen Zahlen, die in ihrer binären Darstellung keine zwei aufeinanderfolgende Nullen haben.

Kleine Unterstützung zur Prüfung: Die ersten 10 Zahlen der Liste sind: 0, 1, 2, 3, 5, 6, 7, 10, 11 und 13. Das 1.000ste (letzte) Element der Liste ist 10.965.

Viel Spaß!
#2
vote_ok
von JKooP (18090 Punkte) - 06.06.2021 um 18:56 Uhr
NET 5.x; C# 9.x; VS-2019
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Text;

Console.WriteLine(new BinaryWithoutDoubleZero(1, 10_000));

record BinaryWithoutDoubleZero(uint Start = 1, uint End = 100)
{
    private readonly Dictionary<uint, string> _dic = new();

    private static string ToBinary(uint n) => Convert.ToString(n, 2);

    private static bool IsDoubleZero(string s)
    {
        var z = 0;
        foreach (var i in s)
        {
            if (i == '0') z++;
            else z = 0;
            if (z == 2) return true;
        }
        return false;
    }

    private void SetNumbers()
    {
        for (uint i = Start; i < End; i++)
        {
            var b = ToBinary(i);
            if (!IsDoubleZero(b))
                _dic.Add(i, b);
        }
    }

    public override string ToString()
    {
        StringBuilder sb = new();
        SetNumbers();

        foreach (var i in _dic)
            sb.Append($"{i.Key} : {i.Value}\n");
        return sb.ToString();
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben