题解 | #24点运算#

24点运算

https://www.nowcoder.com/practice/7e124483271e4c979a82eb2956544f9d

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    const queue = (arr, len) => {
        let res = []; // 所有排列结果
        let arrange = (tempArr, leftArr) => {
            // tempArr:排列好的元素 leftArr:待排列元素
            if (tempArr.length === len) {
                // 这里就是递归结束的地方
                res.push(tempArr.join("")); // 得到全排列的每个元素都是字符串
            } else {
                leftArr.forEach((item, index) => {
                    let temp = [].concat(leftArr);
                    temp.splice(index, 1);
                    // 第一个参数是当前分离出的元素所在数组;第二个参数temp是传入的leftArr去掉第一个后的结果
                    arrange(tempArr.concat(item), temp); // 这里使用了递归
                });
            }
        };
        arrange([], arr);
        return res;
    };

    const operations = [
        "+",
        "+",
        "+",
        "-",
        "-",
        "-",
        "*",
        "*",
        "*",
        "/",
        "/",
        "/",
    ];
    const operationQueue = queue(operations, 3);

    const trans = (a) => {
        switch (a) {
            case "A":
                return 1;
            case "J":
                return 11;
            case "Q":
                return 12;
            case "K":
                return 13;
            default:
                return parseInt(a);
        }
    };

    const calculate = (a, b, operation) => {
        switch (operation) {
            case "+":
                return trans(a) + trans(b);
            case "-":
                return trans(a) - trans(b);
            case "*":
                return trans(a) * trans(b);
            case "/":
                return parseInt(trans(a) / trans(b));
        }
    };

    while ((line = await readline())) {
        let tokens = line.split(" ");
        if (tokens.some((item) => item === "joker" || item === "JOKER")) {
            console.log("ERROR");
        } else {
            const cardsQueue = queue(tokens, 4);
            let isBreak = false;
            for (let cardsStr of cardsQueue) {
                for (let operationStr of operationQueue) {
                    let res1 = calculate(
                        cardsStr[0],
                        cardsStr[1],
                        operationStr[0]
                    );
                    let res2 = calculate(res1, cardsStr[2], operationStr[1]);
                    let res3 = calculate(res2, cardsStr[3], operationStr[2]);
                    if (res3 === 24) {
                        console.log(
                            cardsStr[0].concat(
                                operationStr[0],
                                cardsStr[1],
                                operationStr[1],
                                cardsStr[2],
                                operationStr[2],
                                cardsStr[3]
                            )
                        );
                        isBreak = true;
                        break;
                    }
                }
                if (isBreak) break;
            }
            if (!isBreak) console.log("NONE");
        }
    }
})();

全部评论

相关推荐

不愿透露姓名的神秘牛友
2025-12-04 02:00
offer1:字节跳动(北京)- 后端开发岗- 薪资:总包42w(基本工资30w+绩效6w+年终奖6w),15薪,加班费按法定标准发放- 福利:公积金按12%缴纳,无宿舍,每月住房补贴2000元,餐补1500元,每年2次体检,免费健身房- 工作强度:996是常态,忙的时候可能到凌晨,团队节奏快,压力大- 其他:平台大,技术氛围浓,晋升路径清晰,对转行选手来说履历加分多,但北京生活成本高,租房压力大offer2:美团(上海)- 客户端开发岗- 薪资:总包38w(基本工资26w+绩效5w+年终奖7w),14薪,加班无加班费,可调休- 福利:公积金按10%缴纳,无宿舍,每月住房补贴1800元,餐补800元,每年1次体检,节日福利丰富- 工作强度:995为主,偶尔周末加班,项目紧急时会通宵,整体压力中等- 其他:公司业务成熟,行业地位稳固,客户端岗位需求稳定,上海生活节奏比北京稍缓,但租房成本仍较高offer3:网易(杭州)- 测试开发岗- 薪资:总包32w(基本工资22w+绩效4w+年终奖6w),13薪,加班较少,无加班费- 福利:公积金按12%缴纳,提供员工宿舍(单人间,前两年免费,第三年按市场价5折),每月餐补1000元,每年1次体检+1次旅游补贴- 工作强度:965为主,几乎无强制加班,团队氛围轻松,摸鱼文化盛行- 其他:杭州生活成本低于北上,宿舍省房租,测试开发岗入门难度低,适合转行过渡,但技术成长速度可能不如开发岗,未来跳槽竞争力未知本人情况:传统工科转行,编程基础一般,想快速提升技术能力,同时也希望工作生活能平衡,未来不确定是否留在一线城市。有没有同款转行选手或互联网前辈给点建议呀?
森七菜:梦到什么说什么属于是
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务