Skip to content
DeepForgeby svx
All problems
EasyData Structuresds-253

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
    pass

4 test cases · run your code against them in the editor