public static void Main(string[] args)
Console.WriteLine(IsActNumberBetween(6, 1933, 500, 1933, 5, 1993).ToString());
Console.WriteLine(CompareActNumbers(6, 1933, 5, 1933, "IsBefore").ToString());
Console.WriteLine(CompareActNumbers(6, 1933, 5, 1933, "IsAfter").ToString());
public static bool IsActNumberBetween(ulong actNumber, int actYear, ulong firstNumber, int firstYear, ulong secondNumber, int secondYear)
if (actYear >= Math.Min(firstYear, secondYear) || actYear <= Math.Max(firstYear, secondYear))
var bigger = Math.Max(actNumber.ToString().Length, Math.Max(firstNumber.ToString().Length, secondNumber.ToString().Length));
actNumber = Convert.ToUInt64(actNumber.ToString().PadRight(bigger, '0'));
firstNumber = Convert.ToUInt64(firstNumber.ToString().PadRight(bigger, '0'));
secondNumber = Convert.ToUInt64(secondNumber.ToString().PadRight(bigger, '0'));
return BetweenRanges(Convert.ToUInt64(firstYear.ToString() + firstNumber.ToString()), Convert.ToUInt64(secondYear.ToString() + secondNumber.ToString()), Convert.ToUInt64(actYear.ToString() + actNumber.ToString()));
public static bool CompareActNumbers(ulong actNumber, int actYear, ulong firstNumber, int firstYear, string compare)
var bigger = Math.Max(actNumber.ToString().Length, firstNumber.ToString().Length);
actNumber = Convert.ToUInt64(actNumber.ToString().PadRight(bigger, '0'));
firstNumber = Convert.ToUInt64(firstNumber.ToString().PadRight(bigger, '0'));
return BeforeDate(Convert.ToUInt64(firstYear.ToString() + firstNumber.ToString()), Convert.ToUInt64(actYear.ToString() + actNumber.ToString()));
else if (actYear == firstYear)
return BeforeDate(Convert.ToUInt64(firstYear.ToString() + firstNumber.ToString()), Convert.ToUInt64(actYear.ToString() + actNumber.ToString()));
if (actYear >= firstYear)
var bigger = Math.Max(actNumber.ToString().Length, firstNumber.ToString().Length);
actNumber = Convert.ToUInt64(actNumber.ToString().PadRight(bigger, '0'));
firstNumber = Convert.ToUInt64(firstNumber.ToString().PadRight(bigger, '0'));
return AfterDate(Convert.ToUInt64(firstYear.ToString() + firstNumber.ToString()), Convert.ToUInt64(actYear.ToString() + actNumber.ToString()));
else if (actYear == firstYear)
return BeforeDate(Convert.ToUInt64(firstYear.ToString() + firstNumber.ToString()), Convert.ToUInt64(actYear.ToString() + actNumber.ToString()));
public static bool BetweenRanges(ulong a, ulong b, ulong number)
return (a <= number && number <= b);
public static bool BeforeDate(ulong a, ulong number)
public static bool AfterDate(ulong a, ulong number)