Don't like ads? PRO users don't see any ads ;-)
Guest

ycombinator

By: a guest on Jun 14th, 2012  |  syntax: JavaScript  |  size: 1.67 KB  |  hits: 26  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. (function(){
  2.     var ycomb={};
  3.     var Y=ycomb.Y=function(f) {
  4.         return (
  5.             (function (x) {
  6.                 return f(function (v) { return x(x)(v); }); })
  7.             (function (x) {
  8.                 return f(function (v) { return x(x)(v); }); })
  9.         );
  10.     };
  11.     var ilog=ycomb.ilog=function(b, j){
  12.         var n=1;
  13.         if(b>j) return 0;
  14.         else{
  15.             Y(function(fn){
  16.                 return function(d){
  17.                     var a=d[0];var b=d[1];var c=d[2];
  18.                     if(b>c) return c;
  19.                     else{
  20.                         n+=a;
  21.                         var h=fn([2*a,b*b,(c-c%b)/b]);
  22.                         if(b>h) return h;
  23.                         else{
  24.                             n+=a;
  25.                             return (h-h%b)/b;
  26.                         }
  27.                     }
  28.                 }})([1,b,(j-j%b)/b]);
  29.             return n;
  30.         };
  31.     };
  32.     global.ycomb=ycomb;
  33. })(this);
  34.  
  35. /*
  36. ilog(2,928475)
  37. > (OUTER-YCOMBINATOR #<fn>)
  38.  > (FUNCTION-WRAPPER #<fn>)
  39.  < (#<fn>)
  40. < (#<fn>)
  41. > (INTEGER-LOGARITHM-FUNCTION (1 2 464237))
  42.  > (INNER-YCOMBINATOR (2 4 232118))
  43.   > (OUTER-YCOMBINATOR #<fn>)
  44.    > (FUNCTION-WRAPPER #<fn>)
  45.    < (#<fn>)
  46.   < (#<fn>)
  47.   > (INTEGER-LOGARITHM-FUNCTION (2 4 232118))
  48.    > (INNER-YCOMBINATOR (4 16 58029))
  49.     > (OUTER-YCOMBINATOR #<fn>)
  50.      > (FUNCTION-WRAPPER #<fn>)
  51.      < (#<fn>)
  52.     < (#<fn>)
  53.     > (INTEGER-LOGARITHM-FUNCTION (4 16 58029))
  54.      > (INNER-YCOMBINATOR (8 256 3626))
  55.       > (OUTER-YCOMBINATOR #<fn>)
  56.        > (FUNCTION-WRAPPER #<fn>)
  57.        < (#<fn>)
  58.       < (#<fn>)
  59.       > (INTEGER-LOGARITHM-FUNCTION (8 256 3626))
  60.        > (INNER-YCOMBINATOR (16 65536 14))
  61.         > (OUTER-YCOMBINATOR #<fn>)
  62.          > (FUNCTION-WRAPPER #<fn>)
  63.          < (#<fn>)
  64.         < (#<fn>)
  65.         > (INTEGER-LOGARITHM-FUNCTION (16 65536 14))
  66.         < (14)
  67.        < (14)
  68.       < (14)
  69.      < (14)
  70.     < (14)
  71.    < (14)
  72.   < (3 2)
  73.  < (3 2)
  74. < (1 1)
  75. => 19
  76. */