切方块-输入方块的大小和切割的刀数计算出分割了多少块
本帖最后由 凌云墨客 于 2020-9-7 14:13 编辑我的一个朋友问我一个问题,一个方块切3刀能得到多少个块,每个小块最小边长不能小于1。
思索了半天终于想出了解决办法,用js写了一个算法,输入方块大小,和切割的刀数计算出得到的小方块个数。
哈哈哈!挺好玩的
写到附件里了,大家可以看下,您有更好的实现方法可以在评论区讨论
==================================
/**
* 切割方块
* 输入四位数,x y z k
* 输出 最多切割多少块
* 例如 输入2 2 2 3
*输出 8
*/
function cutting(x,y,z,k){
//统计 x y z轴上被切割的次数
let count_x = 0;
let count_y = 0;
let count_z = 0;
//三个平面被分割的块数
let xy = 1;
let xz = 1;
let yz = 1;
//初始化方块数据
//索引代表轴线,默认为0,x轴
let arr = ;
let lien = 0;
for(let i=0; i < k; i++){
// console.log(arr)
//判断当前轴是否是非法分割 x=0.5
let count = 0;//判断的K值是否非法
while(true){
if(arr < 2){
if(count === 3){
break;
}
count += 1;
lien +=1;
}else{
// console.log('正在切割:',lien%3,'轴')
break;
}
}
if(count === 3){
// console.log('k值非法,输出结果')
return xy*(count_z+1);
}
//模为0切割x
//模为1切割y
//模为2切割z
if(lien%3===0){
//切割x轴时,yz不变,xy用y统计,xz用z统计
x = x-1;
count_x += 1;
xy += count_y+1;
xz += count_z+1;
}else if(lien%3===1){
//切割y轴时,xz不变,xy用x统计,yz用z统计
y = y-1;
count_y += 1;
xy += count_x+1;
yz += count_z+1;
}else if(lien%3===2){
//切割z轴时,xy不变,xz用x统计,yz用y
z = z-1;
count_z += 1;
xz += count_x+1;
yz += count_y+1;
}
arr=;
lien+=1;
}
return xy*(count_z+1);
}
console.log(cutting(3,3,3,3))
================================
这个也要币的吗 Βigbang 发表于 2020-9-6 15:17
这个也要币的吗
不需要吧 直接贴代码啊!
页:
[1]