利用随机洗牌在10*10表格内输出随机20个O
来自 Knuth洗牌算法 ,Knuth的书《The Art of Computer Programming》,简称 TAOC
<style>
body {
background-color: #f8f8f8;
}
#box {
width: 220px;
height: 220px;
margin: 20px auto;
/* border: 1px solid #333; */
background-color: #fff;
}
.inner {
width: 20px;
height: 20px;
/* margin: 20px auto; */
margin: 0px;
margin-top: -12px;
display: inline-block;
border: 1px solid #333;
background-color: #fff;
/* box-sizing: border-box; */
text-align: center;
line-height: 20px;
vertical-align:text-top;
/* vertical-align:top; */
}
</style>
</head>
<body>
<div id="box">
</div>
<script>
var arr = [];
for(var i= 0;i<=99;i++){
arr[i]=i;//100个顺序排列数字
}
var rams =function(arr){ //随机洗牌函数
for(var i = (arr.length-1); i>= 0; i--)
{
var x = Math.floor(Math.random() * (i+1));
var m = arr[i]
arr[i]=arr[x];
arr[x]=m;
}
console.log(arr)
}
rams(arr) //100个数字打乱排序
var x = '';
console.log(arr)
for (var i = 0; i < arr.length;i++) {
if(arr[i]<20) { //循环判断
x = x+'<div class="inner">O</div>'
} else {
x = x+'<div class="inner"> </div>'
}
}
document.getElementById('box').innerHTML = x;
</script>
一维数组转嵌套数组并去重;
[
{ parent: '1', son: '1' },
{ parent: '1', son: '2' },
{ parent: '2', son: '1' }
{ parent: '2', son: '2' }
]转化成
[
{
parent: '1',
children:[
{ son: '1' },
{ son: '2' }
]
},
{
parent: '2',
children:[
{ son: '1' },
{ son: '2' }
]
}
]
const classify = (data) => {
let list = [];
data.map(ele => {
if (list.length <= 0) {
list.push({
parent: ele.parent,
childrens: [{son: ele.son}]
})
return
}
let child = list.find(item => {
return item.parent ==ele.parent
})
if (child) {
child.childrens.push({son: ele.son})
} else {
list.push({
parent: ele.parent,
childrens: [{son: ele.son}]
})
}
})
return list
}
有一组数字,从1到n,从中减少了3个数,顺序也被打乱,放在一个n-3的数组里
请找出丢失的数字,最好能有程序,最好算法比较快
假设n=10000
function getArray (){ //创建随机丢失3个数字的数组,并打乱顺序。
var arr =[]
for(var i=1;i<=10000;i++){
arr.push(i);
}
var a = arr.splice(Math.floor(Math.random()*arr.length),1);
var b = arr.splice(Math.floor(Math.random()*arr.length),1);
var c = arr.splice(Math.floor(Math.random()*arr.length),1);
arr.sort(function(){
return 0.5 - Math.random();
});
console.log('丢失数字为: ' + a + ',' + b + ',' + c + '\n数组元素个数: ' + arr.length);
return arr;
}
function getMissMunber(arr){ //寻找丢失的数字。
var mis = [],
obj = {},
len = 10000;
for(var i=0; i<arr.length; i++){
obj[arr[i]] = true;
}
for(var i=1; i<=len; i++){
if(!obj[i]){
mis.push(i);
}
}
return mis;
}
var arr = getArray ();
var mis = getMissMunber(arr);
console.log('计算结果: ' + mis);
网友评论