N变量卡诺图JS实现

<html>
<head>
<link rel="stylesheet" href="jquery-ui.css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery-ui.js"></script>
</head>
<body>
</body>
</html>
<style>

</style>

<script>
function axis(N){
// N变量各分量的位次序数组
var C={};
for(var i=0;i<N;i++)
(function(i){
C[i]=[];
for(var j=0;j<i;j++)
(function(j){
C[i]=C[i].concat(C[j]);
})(j);
C[i].unshift(i);
})(i);
// N变量单轴位次序数组
var R=[];
for(var k=0;k<N;k++)
(function(k){
R=R.concat(C[k]);
})(k);

return R;
};
function axisArr(n){
// 1.单位初始化,轴位次序数组初始化
var e='',xi=[];
for(var i=0;i<n;i++)
e+='0';
xi=axis(n);
// 2.
var arr=[e];
for(var j in xi){
var lastEle=arr[j];
var changingPoint=lastEle.substr(n-1-xi[j],1);
changingPoint=changingPoint==='0'?'1':'0';
lastEle=lastEle.substring(0,n-1-xi[j])+changingPoint+lastEle.substring(n-xi[j]); // 若用其它语言实现,注意数组越界问题。(n-xi[j])
arr.push(lastEle);
}
return arr;
};
function karnaughMap(nx,ny){
var map='<table><tbody>';
var arrx=axisArr(nx),arry=axisArr(ny);
for(var y in arry){
var row='<tr>';
for(var x in arrx)
row+='<td>'+arry[y]+arrx[x]+'</td>';
row+='</tr>';

map+=row;
}
return map+='</tbody></table>';
};

document.write(karnaughMap(4,3));
</script>

 

posted @ 2016-11-24 14:09  huanglongblog  阅读(311)  评论(0编辑  收藏  举报