Advertisement
Fedor_Mukhin

Untitled

Aug 23rd, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.72 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApp25
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Console.WriteLine(Translate('а', 3) == 'г');
  14.             Console.WriteLine(Translate('г', 3) == 'ж');
  15.             Console.WriteLine(Translate('а', 5) == 'е');
  16.             Console.WriteLine(Translate('я', 1) == 'а');
  17.             Console.WriteLine(Translate('я', 3) == 'в');
  18.  
  19.             Console.WriteLine(Translate('я', -3) == 'ь');
  20.             Console.WriteLine(Translate('а', -3) == 'э');
  21.             Console.WriteLine(Translate('б', -3) == 'ю');
  22.  
  23.             Console.WriteLine(Translate('б', 32) == 'б');
  24.             Console.WriteLine(Translate('б', -32) == 'б');
  25.             Console.WriteLine(Translate('б', 33) == 'в');
  26.             Console.WriteLine(Translate('б', -33) == 'а');
  27.             Console.WriteLine(Translate('б', 34) == 'г');
  28.             Console.WriteLine(Translate('б', -34) == 'я');
  29.             Console.WriteLine(Translate('б', 64) == 'б');
  30.             Console.WriteLine(Translate('б', -64) == 'б');
  31.         }
  32.  
  33.         static char Translate(char symbol, int translation, char min = 'а', char max = 'я')
  34.         {
  35.             int numbSymbol = (int)symbol;
  36.             numbSymbol += translation;
  37.             if (translation <= 32 && translation >= -32)
  38.             {
  39.                 numbSymbol = Clamp(numbSymbol, 'а', 'я');
  40.             }
  41.             else
  42.             {
  43.                 int replay = (((Math.Abs(numbSymbol - 1072))) % 32);
  44.                 for (int i = 0; i < replay + 2; i++)
  45.                 {
  46.                     numbSymbol = Clamp(numbSymbol, 'а', 'я');
  47.                 }
  48.             }
  49.             return (Convert.ToChar(numbSymbol));
  50.         }
  51.         static int Clamp(int actual, char Min, char Max)
  52.         {
  53.             int result = 0;
  54.             if (actual < Min)
  55.             {
  56.                 result = Max - ((Min - actual) - 1);
  57.                 if (result == Min)
  58.                 {
  59.                     return actual + 32;
  60.                 }
  61.                 else
  62.                 {
  63.                     return result;
  64.                 }
  65.            
  66.             }
  67.             else if (actual > Max)
  68.             {
  69.                 result = Min + ((actual - Max) - 1);
  70.                 if (result == Max)
  71.                 {
  72.                     return actual - 32;
  73.                 }
  74.                 else
  75.                 {
  76.                     return result;
  77.                 }
  78.                
  79.             }
  80.             else
  81.             {
  82.                 return actual;
  83.             }
  84.         }
  85.  
  86.     }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement