C#练习题答案: TO DE-RY-PO-陆琪暗号【难度:1级】--景越C#经典编程题库,1000道C#基础练习题等你来挑战

TO DE-RY-PO-陆琪暗号【难度:1级】:

答案1:

  using System.Linq;
  public class Kata
  {
        public static string Encode(string str) => Decode(str);
        public static string Decode(string str)
        {
            var s = "GDRPLKgdrplkAEYOUIaeyoui";
            var t = "AEYOUIaeyouiGDRPLKgdrplk";
            return string.Concat(str.Select(x => s.IndexOf(x) < 0 ? x : t[s.IndexOf(x)]));
        }
  }

答案2:

using System;
using System.Linq;
using System.Collections.Generic;

public static class Kata
{
  private static Dictionary<char, char> d = new Dictionary<char, char> {
    {'G', 'A'},
    {'A', 'G'},
    {'g', 'a'},
    {'a', 'g'},
    {'D', 'E'},
    {'E', 'D'},
    {'d', 'e'},
    {'e', 'd'},
    {'R', 'Y'},
    {'Y', 'R'},
    {'r', 'y'},
    {'y', 'r'},
    {'P', 'O'},
    {'O', 'P'},
    {'p', 'o'},
    {'o', 'p'},
    {'L', 'U'},
    {'U', 'L'},
    {'l', 'u'},
    {'u', 'l'},
    {'K', 'I'},
    {'I', 'K'},
    {'k', 'i'},
    {'i', 'k'}
  };
  public static string Encode(string s) => new String(s.Select(c => d.ContainsKey(c) ? d[c] : c).ToArray());
  public static string Decode(string s) => Encode(s);
}

答案3:

  using System;
  using System.Text;
  using System.Collections.Generic;
  public  class Kata
  {
        private static Dictionary<char, char> dict = new Dictionary<char, char>(){
                {'G','A'}, {'D','E'}, {'R','Y'},{'P','O'}, {'L','U'}, {'K','I'}, 
                {'A','G'}, {'E','D'}, {'Y','R'},{'O','P'}, {'U','L'}, {'I','K'},
                {'g','a'}, {'d','e'}, {'r','y'},{'p','o'}, {'l','u'}, {'k','i'},
                {'a','g'}, {'e','d'}, {'y','r'},{'o','p'}, {'u','l'}, {'i','k'}};
                
        public static string Encode(string str)
        {        
            StringBuilder sb = new StringBuilder();
            foreach(char c in str)
            {
             if(dict.ContainsKey(c)) sb.Append(dict[c]);
             else sb.Append(c);
            }
              return sb.ToString();
        }

        public static string Decode(string str)
        {
            return Encode(str);
        }
  }

答案4:

using System.Linq;

public class Kata
{
    private const string s1 = "AaEeYyOoUuIiGgDdRrPpLlKk";
    private const string s2 = "GgDdRrPpLlKkAaEeYyOoUuIi";

    public static string Encode(string str)
    {
        return string.Join("", str.Select(x => s1.IndexOf(x) >= 0 ? s2[s1.IndexOf(x)] : x));
    }

    public static string Decode(string str)
    {
        return Encode(str);
    }
}

答案5:

using System;

public class Kata
{
    private static char[,] letterSwap = new char[,] { { 'g', 'a' }, { 'd', 'e' }, { 'r', 'y' }, { 'p', 'o' }, { 'l', 'u' }, { 'k', 'i' } };

    public static string Encode(string str)
    {
        return EncodeDecode(str);
    }

    public static string Decode(string str)
    {
        return EncodeDecode(str);
    }

    private static string EncodeDecode(string str)
    {
        for (int i = 0; i < letterSwap.Length / 2; i++)
        {
            str = str.Replace(letterSwap[i, 0], '~').Replace(letterSwap[i, 1], letterSwap[i, 0]).Replace('~', letterSwap[i, 1]);
            str = str.Replace(Char.ToUpper(letterSwap[i, 0]), '~').Replace(Char.ToUpper(letterSwap[i, 1]), Char.ToUpper(letterSwap[i, 0])).Replace('~', Char.ToUpper(letterSwap[i, 1]));
        }
        return str;
    }
}

答案6:

using System;
using System.Collections.Generic;
using System.Linq;  
  
  public  class Kata
  {
  public static Dictionary<char, char> d = new Dictionary<char, char>
        {
            { 'g', 'a' },
            { 'a', 'g' },
            { 'd', 'e' },
            { 'e', 'd' },
            { 'r', 'y' },
            { 'y', 'r' },
            { 'p', 'o' },
            { 'o', 'p' },
            { 'l', 'u' },
            { 'u', 'l' },
            { 'k', 'i' },
            { 'i', 'k' }
        };
        public static string Encode(string str)
        {           
            string outStr = "";

            foreach (char ch in str)
            {
                if (d.ContainsKey(Char.ToLower(ch)))
                {
                    if (Char.IsUpper(ch))
                        outStr += Char.ToUpper(d[Char.ToLower(ch)]);
                    else
                        outStr += d[ch];
                }
                else
                    outStr += ch;
            }

            return outStr;
        }

        public static string Decode(string str)
        {
            return Encode(str);
        }
  }

答案7:

using System.Linq;
using System;


  public  class Kata
  {
        public static string Encode(string str)
        {
            string cyper = "gaderypolukiGADERYPOLUKI";
            return string.Concat( str.Select(x => cyper.IndexOf(x) == -1 ? x :
                  ((cyper.IndexOf(x) % 2 == 1) ? cyper[cyper.IndexOf(x) - 1] : cyper[cyper.IndexOf(x) + 1])));
        }

        public static string Decode(string str)
        {
            return Encode(str);
        }
  }

答案8:

  public  class Kata
  {
        public static string Encode(string str)
        {        
          string res = "";
          for(int i=0;i<str.Length;i++)
          {
            switch(str[i])
            {
              case 'g': res += "a"; break;
              case 'G': res += "A"; break;
              case 'd': res += "e"; break;
              case 'D': res += "E"; break;
              case 'r': res += "y"; break;
              case 'R': res += "Y"; break;
              case 'p': res += "o"; break;
              case 'P': res += "O"; break;
              case 'l': res += "u"; break;
              case 'L': res += "U"; break;
              case 'k': res += "i"; break;
              case 'K': res += "I"; break;
              case 'a': res += "g"; break;
              case 'A': res += "G"; break;
              case 'e': res += "d"; break;
              case 'E': res += "D"; break;
              case 'y': res += "r"; break;
              case 'Y': res += "R"; break;
              case 'o': res += "p"; break;
              case 'O': res += "P"; break;
              case 'u': res += "l"; break;
              case 'U': res += "L"; break;
              case 'i': res += "k"; break;
              case 'I': res += "K"; break;
              default: res += str[i]; break;
            }
          }
          return res;
        }

        public static string Decode(string str)
        {
          string res = "";
          for(int i=0;i<str.Length;i++)
          {
            switch(str[i])
            {
              case 'a': res += "g"; break;
              case 'A': res += "G"; break;
              case 'e': res += "d"; break;
              case 'E': res += "D"; break;
              case 'y': res += "r"; break;
              case 'Y': res += "R"; break;
              case 'o': res += "p"; break;
              case 'O': res += "P"; break;
              case 'u': res += "l"; break;
              case 'U': res += "L"; break;
              case 'i': res += "k"; break;
              case 'I': res += "K"; break;
              case 'g': res += "a"; break;
              case 'G': res += "A"; break;
              case 'd': res += "e"; break;
              case 'D': res += "E"; break;
              case 'r': res += "y"; break;
              case 'R': res += "Y"; break;
              case 'p': res += "o"; break;
              case 'P': res += "O"; break;
              case 'l': res += "u"; break;
              case 'L': res += "U"; break;
              case 'k': res += "i"; break;
              case 'K': res += "I"; break;
              default: res += str[i]; break;
            }
          }
          return res;
        }
  }

答案9:

using System;
using System.Collections.Generic;
using System.Linq;

public class Kata {

  public static string KeyMap(string str, string preKey, string key) {
    char[] res = str
      .ToCharArray()
      .Select(x => (preKey.Contains(Convert.ToString(x))) ? key[preKey.IndexOf(x)] : x)
      .ToArray();
    return new String(res);
  }

  public static string Encode(string str) {
    string preKey = "gaderypolukiGADERYPOLUKI";
    string key = "agedyropulikAGEDYROPULIK";
    return KeyMap(str, preKey, key);
  }

  public static string Decode(string str) {
    string preKey = "agedyropulikAGEDYROPULIK";
    string key = "gaderypolukiGADERYPOLUKI";
    return KeyMap(str, preKey, key);
  }
}

答案10:

  using System;
  using System.Text;
  
  public  class Kata
  {
        public static string Encode(string str)
        {
            string [] boo = { "GDRPLK", "AEYOUI" };

            StringBuilder temp = new StringBuilder(str);

            for (int i = 0; i < temp.Length; i++)
            {
                if (boo[0].Contains(char.ToUpper(temp[i])))
                {
                    temp[i] = temp[i] > 96 ? char.ToLower(boo[1][boo[0].IndexOf(char.ToUpper(temp[i]))]) :
                        boo[1][boo[0].IndexOf(char.ToUpper(temp[i]))];
                }

                else if (boo[1].Contains(char.ToUpper(temp[i])))
                {
                    temp[i] = temp[i] > 96 ? char.ToLower(boo[0][boo[1].IndexOf(char.ToUpper(temp[i]))]) :
                        boo[0][boo[1].IndexOf(char.ToUpper(temp[i]))];
                }
            }

            return temp.ToString();
        }

        public static string Decode(string str)
        {
            return Encode(str);
        }
  }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值