All problems
Semaphore Permit Acquire
Problem
Simulate a counting semaphore with non-blocking acquisitions.
permits is the initial number of permits. operations contains ["acquire", n] (records True or False, consuming n permits only on success), ["release", n] (records None), or ["value"] (records the current permits).
Return the list of recorded results.
Hint
A failed acquire must not change the permit count.
Test cases
case 1
in: [2,[["acquire",1],["acquire",2],["acquire",1],["release",2],["value"]]]
expected: [true,false,true,null,2]
case 2
in: [0,[["acquire",1],["value"]]]
expected: [false,0]
case 3
in: [1,[["release",5],["value"]]]
expected: [null,6]
case 4
in: [3,[["value"],["acquire",3],["value"],["release",1]]]
expected: [3,true,0,null]
Starter codePython
def semaphore_ops(permits, operations):
# Your code here
pass4 test cases · run your code against them in the editor