Sha256: 87eeb756c18057bb014349637456f5a91cfa59b0e264a6d686949a00574e5247

Contents?: true

Size: 997 Bytes

Versions: 168

Compression:

Stored size: 997 Bytes

Contents

using System;
using System.Linq;

public static class Diamond
{
    public static string Make(char target)
    {
        var letters = GetLetters(target);
        var diamondLetters = letters.Concat(letters.Reverse().Skip(1)).ToArray();

        return string.Join("\n", diamondLetters.Select(diamondLetter => MakeLine(letters.Length, diamondLetter)));
    }

    private static Tuple<char, int>[] GetLetters(char target) =>
        Enumerable
            .Range('A', target - 'A' + 1)
            .Select((c, i) => Tuple.Create((char)c, i))
            .ToArray();

    private static string MakeLine(int letterCount, Tuple<char, int> rowLetter)
    {
        var letter = rowLetter.Item1;
        var row = rowLetter.Item2;
        var outerSpaces = "".PadRight(letterCount - row - 1);
        var innerSpaces = "".PadRight(row == 0 ? 0 : row * 2 - 1);

        return letter == 'A' ? $"{outerSpaces}{letter}{outerSpaces}" : $"{outerSpaces}{letter}{innerSpaces}{letter}{outerSpaces}";
    }
}

Version data entries

168 entries across 168 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.179 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.178 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.177 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.176 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.175 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.174 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.173 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.172 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.171 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.170 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.169 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.167 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.166 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.165 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.164 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.163 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.162 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.161 tracks/csharp/exercises/diamond/Example.cs
trackler-2.2.1.160 tracks/csharp/exercises/diamond/Example.cs