Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ConsoleApp25
- {
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine(Translate('а', 3) == 'г');
- Console.WriteLine(Translate('г', 3) == 'ж');
- Console.WriteLine(Translate('а', 5) == 'е');
- Console.WriteLine(Translate('я', 1) == 'а');
- Console.WriteLine(Translate('я', 3) == 'в');
- Console.WriteLine(Translate('я', -3) == 'ь');
- Console.WriteLine(Translate('а', -3) == 'э');
- Console.WriteLine(Translate('б', -3) == 'ю');
- Console.WriteLine(Translate('б', 32) == 'б');
- Console.WriteLine(Translate('б', -32) == 'б');
- Console.WriteLine(Translate('б', 33) == 'в');
- Console.WriteLine(Translate('б', -33) == 'а');
- Console.WriteLine(Translate('б', 34) == 'г');
- Console.WriteLine(Translate('б', -34) == 'я');
- Console.WriteLine(Translate('б', 64) == 'б');
- Console.WriteLine(Translate('б', -64) == 'б');
- }
- static char Translate(char symbol, int translation, char min = 'а', char max = 'я')
- {
- int numbSymbol = (int)symbol;
- numbSymbol += translation;
- if (translation <= 32 && translation >= -32)
- {
- numbSymbol = Clamp(numbSymbol, 'а', 'я');
- }
- else
- {
- int replay = (((Math.Abs(numbSymbol - 1072))) % 32);
- for (int i = 0; i < replay + 2; i++)
- {
- numbSymbol = Clamp(numbSymbol, 'а', 'я');
- }
- }
- return (Convert.ToChar(numbSymbol));
- }
- static int Clamp(int actual, char Min, char Max)
- {
- int result = 0;
- if (actual < Min)
- {
- result = Max - ((Min - actual) - 1);
- if (result == Min)
- {
- return actual + 32;
- }
- else
- {
- return result;
- }
- }
- else if (actual > Max)
- {
- result = Min + ((actual - Max) - 1);
- if (result == Max)
- {
- return actual - 32;
- }
- else
- {
- return result;
- }
- }
- else
- {
- return actual;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement