Drill

ProblemsC# › orders

Is this status change allowed

mediumordersHash mapsC#

Orders move through a fixed lifecycle, and a support tool needs to know whether a requested change is one the system permits.

CanTransition(current: string, target: string) → bool

C# needs a compiler and Drill does not host one yet, so this page is the reference rather than an exercise: the problem, worked examples, and the solution in full. To type it out, the same problem runs in Python.

Solve it in Python →

Where you start

public bool CanTransition(string current, string target) {
    
}

Worked examples

CallResult
CanTransition("placed", "paid")true
CanTransition("paid", "refunded")true
CanTransition("shipped", "delivered")true
CanTransition("placed", "shipped")false

Hint

A set of allowed pairs is easier to get right than a nest of ifs.

Reference solution in C#
public bool CanTransition(string current, string target) {
    var allowed = new HashSet<string> {
        "placed>paid", "placed>cancelled", "paid>packed", "paid>refunded", "packed>shipped", "shipped>delivered" };
    return allowed.Contains(current + ">" + target);
}

The same problem in another language

More orders problems in C#