mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
51 lines
1.2 KiB
JavaScript
51 lines
1.2 KiB
JavaScript
/* The Great Computer Language Shootout
|
|
http://shootout.alioth.debian.org/
|
|
contributed by Isaac Gouy */
|
|
|
|
function TreeNode(left,right,item){
|
|
this.left = left;
|
|
this.right = right;
|
|
this.item = item;
|
|
}
|
|
|
|
TreeNode.prototype.itemCheck = function(){
|
|
if (this.left==null) return this.item;
|
|
else return this.item + this.left.itemCheck() - this.right.itemCheck();
|
|
}
|
|
|
|
function bottomUpTree(item,depth){
|
|
if (depth>0){
|
|
return new TreeNode(
|
|
bottomUpTree(2*item-1, depth-1)
|
|
,bottomUpTree(2*item, depth-1)
|
|
,item
|
|
);
|
|
}
|
|
else {
|
|
return new TreeNode(null,null,item);
|
|
}
|
|
}
|
|
|
|
var ret;
|
|
|
|
for ( var n = 4; n <= 7; n += 1 ) {
|
|
var minDepth = 4;
|
|
var maxDepth = Math.max(minDepth + 2, n);
|
|
var stretchDepth = maxDepth + 1;
|
|
|
|
var check = bottomUpTree(0,stretchDepth).itemCheck();
|
|
|
|
var longLivedTree = bottomUpTree(0,maxDepth);
|
|
for (var depth=minDepth; depth<=maxDepth; depth+=2){
|
|
var iterations = 1 << (maxDepth - depth + minDepth);
|
|
|
|
check = 0;
|
|
for (var i=1; i<=iterations; i++){
|
|
check += bottomUpTree(i,depth).itemCheck();
|
|
check += bottomUpTree(-i,depth).itemCheck();
|
|
}
|
|
}
|
|
|
|
ret = longLivedTree.itemCheck();
|
|
}
|