zoukankan      html  css  js  c++  java
  • 漂亮的代码1:计算器

    看到一个代码问题:

    seven(times(five())); // must return 35
    four(plus(nine())); // must return 13
    eight(minus(three())); // must return 5
    six(dividedBy(two())); // must return 3
    

    自己写成了这样:

    function zero() {
    	if(arguments.length === 0){
      	return 0;
      } else {
        var result = arguments[0];
        return result.op(0);
      }
    }
    function one() {
      if(arguments.length === 0){
      	return 1;
      } else {
        var result = arguments[0];
        return result.op(1);
      }
    }
    function two() {
      if(arguments.length === 0){
      	return 2;
      } else {
        var result = arguments[0];
        return result.op(2);
      }
    }
    function three() {
      if(arguments.length === 0){
      	return 3;
      } else {
        var result = arguments[0];
        return result.op(3);
      }
    }
    function four() {
      if(arguments.length === 0){
      	return 4;
      } else {
        var result = arguments[0];
        return result.op(4);
      }
    }
    function five() {
      if(arguments.length === 0){
      	return 5;
      } else {
        var result = arguments[0];
        return result.op(5);
      }
    }
    function six() {
      if(arguments.length === 0){
      	return 6;
      } else {
        var result = arguments[0];
        return result.op(6);
      }
    }
    function seven() {
      if(arguments.length === 0){
      	return 7;
      } else {
        var result = arguments[0];
        return result.op(7);
      }
    }
    function eight() {
      if(arguments.length === 0){
      	return 8;
      } else {
        var result = arguments[0];
        return result.op(8);
      }
    }
    function nine() {
    	if(arguments.length === 0){
      	return 9;
      } else {
        var result = arguments[0];
        return result.op(9);
      }
    }
    
    function plus() {
       return {
          op:function(left){
             return left + this.right;
          },
          right:arguments[0]
       }
    }
    function minus() {
       return {
          op:function(left){
             return left - this.right;
          },
          right:arguments[0]
       }
    }
    function times() {
       return {
          op:function(left){
             return left * this.right;
          },
          right:arguments[0]
       }
    }
    function dividedBy() {
       return {
          op:function(left){
             return left / this.right;
          },
          right:arguments[0]
       }
    }
    

    看到别人是如何解决的,真是漂亮:

    var n = function(digit) {
      return function(op) {
        return op ? op(digit) : digit;
      }
    };
    var zero = n(0);
    var one = n(1);
    var two = n(2);
    var three = n(3);
    var four = n(4);
    var five = n(5);
    var six = n(6);
    var seven = n(7);
    var eight = n(8);
    var nine = n(9);
    
    function plus(r) { return function(l) { return l + r; }; }
    function minus(r) { return function(l) { return l - r; }; }
    function times(r) { return function(l) { return l * r; }; }
    function dividedBy(r) { return function(l) { return l / r; }; }
    

    自己写成了一堆屎,好好学习。

  • 相关阅读:
    Codeforces Round #590 D. Distinct Characters Queries
    线段树模板加模板题POJ3468
    hihoCoder挑战赛5 C 与链
    HDU 5044 Tree 树链剖分
    HYSBZ 1901 Dynamic Rankings 树状数组套主席树
    POJ 2761 Feed the dogs 主席树
    POJ 2104 K-th Number 主席树 区间第K大
    HDU 4547 CD操作 LCA
    POJ 1470 Closest Common Ancestors 离线LCA
    HYSBZ 1036 树的统计Count 树链剖分 线段树
  • 原文地址:https://www.cnblogs.com/htoooth/p/5528304.html
Copyright © 2011-2022 走看看