Sha256: ca89f30b59c045c70dfe5d3e2fb1113fda4864e1c38139a1f5adcc65e348b5a4

Contents?: true

Size: 744 Bytes

Versions: 209

Compression:

Stored size: 744 Bytes

Contents

using System;
using System.Linq;

public static class RotationalCipher
{
    private const string LowerCaseLetters = "abcdefghijklmnopqrstuvwxyz";
    private const string UpperCaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    public static string Rotate(string text, int shiftKey) 
        => new string(text.Select(letter => Rotate(letter, shiftKey)).ToArray());

    private static char Rotate(char letter, int shiftKey) 
    {
        if (!char.IsLetter(letter))
            return letter;
        
        return Rotate(letter, shiftKey, char.IsLower(letter) ? LowerCaseLetters : UpperCaseLetters);
    }

    private static char Rotate(char letter, int shiftKey, string key)
        => key[(key.IndexOf(letter) + shiftKey) % key.Length];
}

Version data entries

209 entries across 209 versions & 1 rubygems

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