https://leetcode-cn.com/problems/add-to-array-form-of-integer/

    1. /**
    2. num = [2,7,4], k = 181
    3. 2 + 1, 7 + 8, 4 + 1
    4. */
    5. function addToArrayForm(num: number[], k: number): number[] {
    6. const result: number[] = [];
    7. const len = num.length;
    8. for(let i = len - 1; i >= 0; i--) {
    9. let sum = num[i] + k % 10;
    10. k = Math.floor(k / 10);
    11. // 需要进位
    12. if (sum >= 10) {
    13. k = k + 1
    14. sum = sum - 10;
    15. }
    16. result.push(sum)
    17. }
    18. // 处理k的数字长度大于数组的数字长度
    19. for (; k > 0; k = Math.floor(k / 10)) {
    20. result.push(k % 10)
    21. }
    22. return result.reverse();
    23. };
    function curry(func: Function) {
      const len = func.length;
      return function inner(...args) {
        if (args.length >= len) {
            return func.apply(null, args);
        }
        return inner.bind(null, ...args);
      }
    }
    
    function sum(a, b, c) {
      return a + b + c;
    }
    
    let curriedSum = curry(sum);
    
    console.log(curriedSum(1, 2, 3)); // 6, still callable normally
    console.log(curriedSum(1)(2, 3)); // 6, currying of 1st arg
    console.log(curriedSum(1)(2)(3)); // 6, full currying