Sha256: 119b00c80c679fd99f7bac49fc46beb48d55a4fb116a0abeab369bfd5561dbf7

Contents?: true

Size: 1.21 KB

Versions: 138

Compression:

Stored size: 1.21 KB

Contents

using System.Linq;
using System.Text.RegularExpressions;

public class PigLatin
{
    public static string Translate(string word)
    {
        return string.Join(" ", word.Split(' ').Select(x => (TranslateWord(x))));
    }

    private static string TranslateWord(string word)
    {
        if (WordStartsWithVowelLike(word))
            return word + "ay";
        if (WordStartsWithPrefixes(word, "thr", "sch"))
            return word.Substring(3) + word.Substring(0, 3) + "ay";
        if (WordStartsWithPrefixes(word, "ch", "qu", "th", "rh"))
            return word.Substring(2) + word.Substring(0, 2) + "ay";
        if (WordStartsWithConsonantAndQu(word))
            return word.Substring(3) + word[0] + "quay";

        return word.Substring(1) + word[0] + "ay";
    }

    private static bool WordStartsWithVowelLike(string word)
    {
        return Regex.IsMatch("[aeiou]", word[0].ToString()) || word.StartsWith("yt") || word.StartsWith("xr");
    }

    private static bool WordStartsWithPrefixes(string word, params string[] prefixes)
    {
        return prefixes.Any(word.StartsWith);
    }

    private static bool WordStartsWithConsonantAndQu(string word)
    {
        return word.Substring(1).StartsWith("qu");
    }
}

Version data entries

138 entries across 138 versions & 1 rubygems

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