Skip to content

Instantly share code, notes, and snippets.

@sguzunov
Created June 8, 2016 12:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sguzunov/52b469f99afeb43781df46d5cc635cff to your computer and use it in GitHub Desktop.
Save sguzunov/52b469f99afeb43781df46d5cc635cff to your computer and use it in GitHub Desktop.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Program
{
private static ulong ConvertFromBaseToDecimal(string word, uint numeralSystem)
{
ulong power = 1;
ulong decimalNumber = 0;
for (int i = word.Length - 1; i >= 0; i--)
{
char letter = word[i];
decimalNumber += ((ulong)(letter - 'a') * power);
power *= numeralSystem;
}
return decimalNumber;
}
private static string ConvertFromDecimalToBase(ulong decimalNumber, uint numeralSystem)
{
StringBuilder baseNumberBuilder = new StringBuilder();
while (decimalNumber > 0)
{
uint remainder = (uint)(decimalNumber % numeralSystem);
char letter = (char)(remainder + 'a');
baseNumberBuilder.Append(letter);
decimalNumber /= numeralSystem;
}
return string.Join("", baseNumberBuilder.ToString().Reverse());
}
static void Main()
{
string[] wordsIn21Base = Console.ReadLine().Split(' ');
List<string> result = new List<string>();
for (int i = 0; i < wordsIn21Base.Length; i++)
{
ulong decimalNumber = ConvertFromBaseToDecimal(wordsIn21Base[i], 21);
string numberAsHumanityWord = ConvertFromDecimalToBase(decimalNumber, 26);
result.Add(numberAsHumanityWord);
}
Console.WriteLine(string.Join(" ", result));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment