LeetCode in Kotlin

2666. Allow One Function Call

Easy

Given a function fn, return a new function that is identical to the original function except that it ensures fn is called at most once.

Example 1:

Input: fn = (a,b,c) => (a + b + c), calls = [[1,2,3],[2,3,6]]

Output: [{“calls”:1,”value”:6}]

Explanation:

const onceFn = once(fn); 
onceFn(1, 2, 3); // 6 
onceFn(2, 3, 6); // undefined, fn was not called

Example 2:

Input: fn = (a,b,c) => (a * b * c), calls = [[5,7,4],[2,3,6],[4,6,8]]

Output: [{“calls”:1,”value”:140}]

Explanation:

const onceFn = once(fn); 
onceFn(5, 7, 4); // 140 
onceFn(2, 3, 6); // undefined, fn was not called 
onceFn(4, 6, 8); // undefined, fn was not called

Constraints:

Solution

type Fn = (...args: any[]) => any

function once(fn: Fn): Fn {
    let wasCalled = false
    return function (...args) {
        if (!wasCalled) {
            wasCalled = true
            return fn(...args)
        }
    }
}

export { once }
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy