function show(response, div){
var div = div || 1;
$('.show'+div).html(response);
}
/**
* 函數名稱 ATCG_Factory
* 輸入預定要產生的ATCG隨機排列組合數目產生ATCG所有的組合ARRAY
*
* @hope_times ATCG的組合指定的次數 2~8的number
*/
result = ATCG_Factory(3);
show(result.join('\n|'));
/**
* 函數名稱 ATCG_Storge
* 轉換成ARRAY儲存空間
*
* @dealwith ATCG的組合指定的次數
*/
show_stroge = ATCG_Storge(result);
var html='';
for(var key in show_stroge){
html += key+"=>"+show_stroge[key]+"<br />";
}
show(html, 2);
//alert(result4.length);
function ATCG_Factory(hope_times, callback_base, callback_times){
var base = ['A','T','C','G'];
//若傳入1則回傳ATCG標準的一組組合
if(hope_times==1){
return base;
}
//限制一下要求排列組數
if(hope_times>=9){
alert("超出系統負荷範圍,請輸入介於2~8的number");
return;
}
//Recursion 用
var callback_base = callback_base || base;
var callback_times = callback_times || 2;
//新排列array的count數
var new_count = Math.pow(4,callback_times);
//被增加佇列的總長度
var part_spread = callback_base.length;
//show(callback_base.join('\n|'));
var new_array_input =[];
//新array四等份
var part = new_count/4;
//算出4等份區間
var part1 = part*1;
var part2 = part*2;
var part3 = part*3;
var part4 = part*4;
for (i=0; i<new_count; i++){
if(i<part1){
//根據餘數來決定置入新array位置 請自行意會
new_array_input[i] = 'A'+callback_base[i%part_spread];
continue;
}
if(i>=part1 && i<part2){
new_array_input[i] = 'T'+callback_base[i%part_spread];
continue;
}
if(i>=part2 && i<part3){
new_array_input[i] = 'C'+callback_base[i%part_spread];
continue;
}
if(i>=part3 && i<part4){
new_array_input[i] = 'G'+callback_base[i%part_spread];
continue;
}
}
//判斷是否Recursion
if(hope_times > callback_times){
var continue_run = ATCG_Factory(hope_times, new_array_input, callback_times+1);
if(continue_run) return continue_run;
} else {
return new_array_input;
}
}
function ATCG_Storge(dealwith){
var stroge_array = [];
for(var key in dealwith){
stroge_array[dealwith[key]] = "儲存空間";
}
return stroge_array;
}
2014年2月22日 星期六
Trying to construct all possible strings from 2~8 bases [ATCG]
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言