Skip to content

Instantly share code, notes, and snippets.

@dgritsko
Created March 14, 2014 19:15
Show Gist options
  • Save dgritsko/9554733 to your computer and use it in GitHub Desktop.
Save dgritsko/9554733 to your computer and use it in GitHub Desktop.
Naive bijective function in C#. http://stackoverflow.com/questions/742013
namespace Alphabet
{
public class AlphabetTest
{
public static readonly string Alphabet = "abcdefghijklmnopqrstuvwxyz0123456789";
public static readonly int Base = Alphabet.Length;
public static string Encode(int i)
{
if (i == 0) return Alphabet[0].ToString();
var s = string.Empty;
while (i > 0)
{
s += Alphabet[i % Base];
i = i / Base;
}
return string.Join(string.Empty, s.Reverse());
}
public static int Decode(string s)
{
var i = 0;
foreach (var c in s)
{
i = (i * Base) + Alphabet.IndexOf(c);
}
return i;
}
public static void Main(string[] args)
{
// Simple test of encode/decode operations
for (var i = 0; i < 10000; i++)
{
if (Decode(Encode(i)) != i)
{
System.Console.WriteLine("{0} is not {1}", Encode(i), i);
break;
}
}
}
}
}
@MrModest
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment