public int id { get; set; }
public ORDER_STATUS status { get; set; }
public DateTime? dispatchedTime { get; set; }
public DateTime? confirmedTime { get; set; }
public DateTime? rejectedTime { get; set; }
public DateTime? arrivalTime { get; set; }
public DateTime? deliveryTime { get; set; }
public DateTime targetArrivalStart { get; set; }
public DateTime targetArrivalEnd { get; set; }
public DateTime targetDeliveryStart { get; set; }
public DateTime targetDeliveryEnd { get; set; }
public decimal baseRate { get; set; }
public DateTime? createdWhen { get; set; }
public string createdBy { get; set; }
public static void Main()
public static void test1()
string input = "Ellen*Ripley*1234 Speedway*Tucson~Dwayne*Hicks*4567 Main*Houston~Carter*Burke*9876 Broadway*Las Vegas";
string expectedOutput = "<1><1-1>Ellen</1-1><1-2>Ripley</1-2><1-3>1234 Speedway</1-3><1-4>Tucson</1-4></1><2><2-1>Dwayne</2-1><2-2>Hicks</2-2><2-3>4567 Main</2-3><2-4>Houston</2-4></2><3><3-1>Carter</3-1><3-2>Burke</3-2><3-3>9876 Broadway</3-3><3-4>Las Vegas</3-4></3>";
string output = StringParser(input);
Assert.AreEqual(expectedOutput, output);
private static string StringParser(string input)
throw new NotImplementedException("Not Implemented");
string[] entries = input.Split('~');
for (int i = 0; i < entries.Length; i++)
string[] secEntries = entries[i].Split('*');
results.Append($"<1-{i + 1}>");
for (int j = 0; j < secEntries.Length; j++)
public static void test2()
Assert.AreEqual(77, divisor(1232, 4, 200));
Assert.AreEqual(42.645454545454548d, divisor(234.55, 5.5, 171));
Assert.AreEqual(111, divisor(333, 3, 111));
Assert.AreEqual(20, divisor(20, 3, 33));
private static double divisor(double input, double denominator, double limit)
throw new NotImplementedException("Not Implemented");
while ((input / denominator) > limit)
public static void test3()
Assert.AreEqual(77, divisorRecursive(1232, 4, 200));
Assert.AreEqual(42.645454545454548d, divisorRecursive(234.55, 5.5, 171));
Assert.AreEqual(111, divisorRecursive(333, 3, 111));
Assert.AreEqual(20, divisorRecursive(20, 3, 33));
private static double divisorRecursive(double input, double denominator, double limit)
throw new NotImplementedException("Not Implemented");
if ((input / denominator) > limit)
divisorRecursive(input, denominator, limit);
public static void test4()
public static void test5()
public static Order(List<Order> orders)
public static void test6()
public static void test7()
public static double DriverPay(Order order)
if (order.status == ORDER_STATUS.REJECTED)
else if (order.status == ORDER_STATUS.DROPPED_OFF)
double pay = order.baseRate;
if (order.arrivalTime >= order.targetArrivalStart && order.arrivalTime <= order.targetArrivalEnd)
pay += 0.03m * order.baseRate;
if (order.deliveryTime >= order.targetDeliveryStart && order.deliveryTime <= order.targetDeliveryEnd)
pay += 0.05m * order.baseRate;
else if (order.status == ORDER_STATUS.CONFIRMED)