読者です 読者をやめる 読者になる 読者になる

(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

コラッツの問題その2

いや、遊んでたら普通に昨日の記録超えた…。

console.time('xxx');

var max = 0,
    val, result;

function collatz2(n){
  var m = n, count = 0;

  while(m !== 1){
    count++;
    m = (m & 1) ? (m<<1)+m+1 : m >> 1;
  }

  return count;
}

for(var i=2; i<=100001; i++){
  val = collatz2(i);
  if(val > max){ max = val; result = i; }
}

console.log(result);

console.timeEnd('xxx'); // xxx: 39ms

結局、配列とかオブジェクトを走査するコストの方がデカイっていうことらしい。
ちょっと後でこれ版の Scheme コード書いてみる。