Sha256: fd2335ca6af8ffcd7603549c8b4d5202e374d5e962b583b65416b251bb9e0d6b

Contents?: true

Size: 1.05 KB

Versions: 396

Compression:

Stored size: 1.05 KB

Contents

Public Class Atbash
    Private Const PLAIN As String = "abcdefghijklmnopqrstuvwxyz"
    Private Const CIPHER As String = "zyxwvutsrqponmlkjihgfedcba"

    Public Shared Function Encode(value As String) As String
        Dim encoded = String.Concat(StripInvalidCharacters(value).ToLower().Select(AddressOf ApplyCipher))
        Return SplitIntoFiveLetterWords(encoded)
    End Function

    Private Shared Function StripInvalidCharacters(value As String) As String
        Return String.Concat(value.Where(AddressOf Char.IsLetterOrDigit))
    End Function

    Private Shared Function ApplyCipher(value As Char) As Char
        Dim idx = PLAIN.IndexOf(value)
        Return If(idx >= 0, CIPHER(idx), value)
    End Function

    Private Shared Function SplitIntoFiveLetterWords(value As String) As String
        Dim words = New List(Of String)()

        For i As Integer = 0 To value.Length - 1 Step 5
            words.Add(If(i + 5 <= value.Length, value.Substring(i, 5), value.Substring(i)))
        Next

        Return String.Join(" ", words)
    End Function
End Class

Version data entries

396 entries across 396 versions & 1 rubygems

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