吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1120|回复: 3
收起左侧

[已解决] 切方块-输入方块的大小和切割的刀数计算出分割了多少块

[复制链接]
凌云墨客 发表于 2020-9-6 13:02
本帖最后由 凌云墨客 于 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 = [x,y,z];
    let lien = 0;

    for(let i=0; i < k; i++){
        // console.log(arr)
        //判断当前轴是否是非法分割 x=0.5
        let count = 0;  //判断的K值是否非法
        while(true){
            if(arr[lien%3] < 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=[x,y,z];
        lien+=1;
    }
    return xy*(count_z+1);
}

console.log(cutting(3,3,3,3))
================================

切割一个方块,输入方块的大小和切割次数,最多能得到多少方块.txt

1.87 KB, 下载次数: 5, 下载积分: 吾爱币 -1 CB

js文件

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Βigbang 发表于 2020-9-6 15:17
这个也要币的吗
 楼主| 凌云墨客 发表于 2020-9-6 22:05
yeyue 发表于 2020-9-6 22:58
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 13:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表