Studencheskie Programmisty

Page 1 of 1: 1

BogosortをJavaScriptで実装してみた

Jan 31, 2011

暇でWikipedia見てたらボゴソートとかいうのを見つけた。JavaScriptでの実装例があまりないようだったので、どうせだからと実装してみることにした。

ちなみに、ボゴソートとは「要素をシャッフル→ソートされてたら処理終了、されてなければまたシャッフル」を繰り返す、非常に効率の悪いアルゴリズムである。

function isSorted(aArray){
   for(var i=0,l=aArray.length-1;i<l;i++){
      if(! (aArray[i] <= aArray[i+1])) return false;
   }
   return true;
}

function shuffle(aArray){
   return aArray.sort(function(){
      return Math.random()*100 <= 50;
   });
}

function bogoSort(aArray){
   while(!isSorted(aArray)){
      shuffle(aArray);
   }
}

追記。sortでシャッフルすると偏るらしいです。

    IEのDOMがおかしい

    Jan 26, 2010

    導入したie6-upgrade-warningが実はうまく動いていなかったので、原因を探っていたら、IEのバグらしきものに遭遇した。

    具体的には、以下のような感じ。

    var input = document.createElement('input');
    input.id = "test_i_1";
    input.type = "checkbox";
    document.body.appendChild(input); //きちんとチェックボックスが追加される
    
    var input = document.createElement('input');
    input.id = "test_i_2";
    document.body.appendChild(input);
    var i = document.getElementById('test_i_2');
    i.type = "checkbox";  //エラーがでる
    

    なぜか、getElementByIdしたやつだとDOMがうまく動かないみたい。ちなみに、i.setAttribute("type", "checkbox")でも 結果は同じだった。

    やはりIEのDOMはよく分からん...