Created
August 28, 2023 19:34
-
-
Save mr5z/6d5d590ff24c4c3d6baa2a5d5f7f40fb to your computer and use it in GitHub Desktop.
Code looks bad. Please help
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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