Skip to content

Instantly share code, notes, and snippets.

@mr5z
Created August 28, 2023 19:34
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 mr5z/6d5d590ff24c4c3d6baa2a5d5f7f40fb to your computer and use it in GitHub Desktop.
Save mr5z/6d5d590ff24c4c3d6baa2a5d5f7f40fb to your computer and use it in GitHub Desktop.
Code looks bad. Please help
string ToOnes(long number)
{
if (number == 0)
{
return "";
}
var words = new string[] { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
return words[number - 1];
}
string ToTeens(long number)
{
if (number == 0)
{
return "";
}
var words = new string[] { "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };
return words[number % 10];
}
string ToXty(long number)
{
if (number == 0)
{
return "";
}
var words = new string[] { "twenty", "thirty", "fourty", "fifty","sixty", "seventy", "eighty", "ninety" };
double a = number / 10;
double b = Math.Floor(a);
return words[(int)(b - 2)];
}
string ToTens(long number)
{
if (number == 0)
{
return "";
}
if (number < 10)
{
return ToOnes(number);
}
if (number >= 10 && number < 20)
{
return ToTeens(number);
}
return $"{ToXty(number)} {ToOnes(number % 10)}";
}
string ToHundreds(long number)
{
if (number == 0)
{
return "";
}
if (number < 100)
{
return ToTens(number);
}
var prefix = (long)Math.Floor((double)(number / 100));
return $"{ToOnes(prefix)} hundred {ToTens(number % 100)}";
}
string ToThousands(long number)
{
if (number == 0)
{
return "";
}
if (number < 1000)
{
return ToHundreds(number);
}
var prefix = (long)Math.Floor((double)(number / 1000));
return $"{ToOnes(prefix)} thousand {ToHundreds(number % 1000)}";
}
string ToTenThousands(long number)
{
if (number == 0)
{
return "";
}
if (number < 10_000)
{
return ToThousands(number);
}
var prefix = (long)Math.Floor((double)(number / 1000));
return $"{ToTens(prefix)} thousand {ToHundreds(number % 1000)}";
}
string ToHundredThousands(long number)
{
if (number == 0)
{
return "";
}
if (number < 100_000)
{
return ToTenThousands(number);
}
var prefix = (long)Math.Floor((double)(number / 1000));
return $"{ToHundreds(prefix)} thousand {ToHundreds(number % 1000)}";
}
string ToMillions(long number)
{
if (number == 0)
{
return "";
}
if (number < 1_000_000)
{
return ToHundredThousands(number);
}
var prefix = (long)Math.Floor((double)(number / 1_000_000));
return $"{ToTens(prefix)} million {ToHundredThousands(number % 1_000_000)}";
}
string ToTenMillions(long number)
{
if (number == 0)
{
return "";
}
if (number < 10_000_000)
{
return ToMillions(number);
}
var prefix = (long)Math.Floor((double)(number / 1_000_000));
return $"{ToTens(prefix)} million {ToHundredThousands(number % 1_000_000)}";
}
string ToHundredMillions(long number)
{
if (number == 0)
{
return "";
}
if (number < 100_000_000)
{
return ToTenMillions(number);
}
var prefix = (long)Math.Floor((double)(number / 1_000_000));
return $"{ToHundreds(prefix)} million {ToHundredThousands(number % 1_000_000)}";
}
string ToBillions(long number)
{
if (number == 0)
{
return "";
}
if (number < 1_000_000_000)
{
return ToHundredMillions(number);
}
var prefix = (long)Math.Floor((double)(number / 1_000_000_000));
return $"{ToOnes(prefix)} billion {ToHundredMillions(number % 1_000_000_000)}";
}
string ToTenBillions(long number)
{
if (number == 0)
{
return "";
}
if (number < 10_000_000_000)
{
return ToBillions(number);
}
var prefix = (long)Math.Floor((double)(number / 1_000_000_000));
return $"{ToTeens(prefix)} billion {ToHundredMillions(number % 1_000_000_000)}";
}
string ToHundredBillions(long number)
{
if (number == 0)
{
return "";
}
if (number < 100_000_000_000)
{
return ToTenBillions(number);
}
var prefix = (long)Math.Floor((double)(number / 1_000_000_000));
return $"{ToHundreds(prefix)} billion {ToHundredMillions(number % 1_000_000_000)}";
}
string ToTrillions(long number)
{
if (number == 0)
{
return "";
}
if (number < 1_000_000_000_000)
{
return ToHundredBillions(number);
}
var prefix = (long)Math.Floor((double)(number / 1_000_000_000_000));
return $"{ToOnes(prefix)} trillion {ToHundredBillions(number % 1_000_000_000_000)}";
}
while (true)
{
Console.Write("< ");
var input = Console.ReadLine();
try
{
var sanitized = input.Replace("_", "");
var words = ToTrillions(long.Parse(sanitized));
var filtered = words.Split(' ', StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine("> " + string.Join(' ', filtered));
}
catch (Exception ex)
{
Console.WriteLine(ex);
break;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment