
ycombinator
By: a guest on
Jun 14th, 2012 | syntax:
JavaScript | size: 1.67 KB | hits: 26 | expires: Never
(function(){
var ycomb={};
var Y=ycomb.Y=function(f) {
return (
(function (x) {
return f(function (v) { return x(x)(v); }); })
(function (x) {
return f(function (v) { return x(x)(v); }); })
);
};
var ilog=ycomb.ilog=function(b, j){
var n=1;
if(b>j) return 0;
else{
Y(function(fn){
return function(d){
var a=d[0];var b=d[1];var c=d[2];
if(b>c) return c;
else{
n+=a;
var h=fn([2*a,b*b,(c-c%b)/b]);
if(b>h) return h;
else{
n+=a;
return (h-h%b)/b;
}
}
}})([1,b,(j-j%b)/b]);
return n;
};
};
global.ycomb=ycomb;
})(this);
/*
ilog(2,928475)
> (OUTER-YCOMBINATOR #<fn>)
> (FUNCTION-WRAPPER #<fn>)
< (#<fn>)
< (#<fn>)
> (INTEGER-LOGARITHM-FUNCTION (1 2 464237))
> (INNER-YCOMBINATOR (2 4 232118))
> (OUTER-YCOMBINATOR #<fn>)
> (FUNCTION-WRAPPER #<fn>)
< (#<fn>)
< (#<fn>)
> (INTEGER-LOGARITHM-FUNCTION (2 4 232118))
> (INNER-YCOMBINATOR (4 16 58029))
> (OUTER-YCOMBINATOR #<fn>)
> (FUNCTION-WRAPPER #<fn>)
< (#<fn>)
< (#<fn>)
> (INTEGER-LOGARITHM-FUNCTION (4 16 58029))
> (INNER-YCOMBINATOR (8 256 3626))
> (OUTER-YCOMBINATOR #<fn>)
> (FUNCTION-WRAPPER #<fn>)
< (#<fn>)
< (#<fn>)
> (INTEGER-LOGARITHM-FUNCTION (8 256 3626))
> (INNER-YCOMBINATOR (16 65536 14))
> (OUTER-YCOMBINATOR #<fn>)
> (FUNCTION-WRAPPER #<fn>)
< (#<fn>)
< (#<fn>)
> (INTEGER-LOGARITHM-FUNCTION (16 65536 14))
< (14)
< (14)
< (14)
< (14)
< (14)
< (14)
< (3 2)
< (3 2)
< (1 1)
=> 19
*/