【问题标题】:pretty printing from any format to a desired format从任何格式到所需格式的漂亮打印
【发布时间】:2018-07-28 12:04:37
【问题描述】:

我想知道是否有一种方法可以将格式转换为我想要的格式,比如说一棵树。举个例子:

a -> b, d
f - > c 
f-> v

I want to have this as an output:


a implies (b and d)
f implies (c or v)

【问题讨论】:

  • 怀疑任何标准库都有你想要的输出。我也怀疑npm 中是否会有任何第 3 方库会为您执行此操作。猜猜你最好的机会就是卷起袖子写代码。
  • 好吧,这是我最不想做的事情。但我敢打赌你是对的:/

标签: node.js pretty-print


【解决方案1】:

这实际上是您正在寻找的算法,但请注意该算法不支持深度条件。

function mathLogic(inputs) {

    var rows = inputs.split("\n");
    for (var i in rows)
        rows[i] = rows[i].replace(/\s/g, "");
    console.log("Rows: ", rows)
    var logics = {};
    for (var i in rows) {
        var row = rows[i];
        var rowSplit = row.split("->");
        var from = rowSplit[0];
        var to = rowSplit[1];
        var ands = to.split(",");
        if (!logics[from])
            logics[from] = [];
        logic = logics[from];
        logic.push(ands);
    }
    for (var i in logics) {
        var implyString = i + " implies ";
        var orLogic = logics[i];
        var ors = [];
        for (var j in orLogic) {
            var or = orLogic[j]
            if (or.length > 1)
                ors.push("(" + or.join(" and ") + ")");
            else
                ors.push(or.join(" and "));
        }
        if (ors.length > 1)
            implyString += "(" + ors.join(" or ") + ")";
        else
            implyString += ors.join(" or ");
        console.log(implyString);
    }
}

mathLogic(`a -> b, d
  f - > c 
  f-> v`);

【讨论】:

  • 你好@Hans。感谢您的代码。是的,我相信这是我需要的一些修改。
猜你喜欢
  • 2011-05-06
  • 2011-01-07
  • 2011-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
  • 2016-02-25
  • 2012-03-07
相关资源
最近更新 更多