skyscraper8/skyscraper8/Skyscraper/Math/PlsCodeConverter.cs

32 lines
665 B
C#

namespace skyscraper8.Skyscraper.Math;
public static class PlsCodeConverter
{
public static int RootToGold(int root)
{
var g = 0;
var X = 1;
for( g = 0; g < 262144; g += 1)
{
if( X == root )
break;
X = ((( X ^ (X >> 7)) & 1) << 17) | (X >> 1);
}
return g;
}
public static int GoldToRoot(int gold)
{
var g = 0;
var X = 1;
for( g = 0; g < 262143; g += 1)
{
if( g == gold )
break;
X = ((( X ^ (X >> 7)) & 1) << 17) | (X >> 1);
}
return X;
}
}