使用javascript的Bliffoscope数据分析解决方案

使用javascript的Bliffoscope数据分析解决方案,javascript,node.js,algorithm,data-structures,Javascript,Node.js,Algorithm,Data Structures,我想使用javascript解决Bliffoscope数据分析问题。我有以下问题 这是SlimeTorpedo + + +++ +++++++ ++ ++ ++ + ++ ++ +++ ++ ++ + ++ ++ ++ +++++++ +++ 这是测试数据 + + + ++ + +++

我想使用javascript解决Bliffoscope数据分析问题。我有以下问题

这是SlimeTorpedo

       +
       +
      +++
    +++++++
    ++   ++
   ++  +  ++
   ++ +++ ++
   ++  +  ++
    ++   ++
    +++++++
      +++
这是测试数据

              + +    +              ++           +       +++    +     +
 +  ++     +   + ++++    + +       +         +          +  +   +++     +++ +
     +            + +   ++      ++  ++    + ++       +     +      +  +   +
+   ++      +  ++       +          + +       ++        ++  +           +
 ++++++ + +    +   ++  +  +   +   +  ++      +         +                     +
  + +   +      +               +      ++     +  ++            +   +    + +
+++   + ++   +  +            +  +++       + +       ++                     +
  +++++  +      +                            +  + +            +   +  +
 +   +   +              +    +      +            +  +   +      +    +     +
 ++    +              +     +       ++   +          +       +           ++
有一个问题与此类似,但在Java中。有人问这个问题

如何用JavaScript解决这个问题

更新

我尝试了以下解决方案

    const fs = require('fs');

    let torpedo = [], starship = [], testData = [];
        // counter = -1;

    function getTorpedoData(fileName, type) {
        let counter = -1;

        return new Promise(function(resolve, reject) {
            fs.readFile(fileName,'utf8', (err, data) => {

                if (err) {
                    reject();
                } else {
                    for (let i = 0; i < data.length; i++) {
                        if (data[i] == '\n' || counter === -1) {
                            torpedo.push([]);
                            counter++;
                        } else {
                            torpedo[counter].push(data[i]);
                        }
                    }
                }

                console.log(data);

                resolve();
            });
        });
    }

    function getTestData(fileName, type) {
        let counter = -1;

        return new Promise(function(resolve, reject) {
            fs.readFile(fileName,'utf8', (err, data) => {

                if (err) {
                    reject();
                } else {
                    for (let i = 0; i < data.length; i++) {
                        if (data[i] == '\n' || counter === -1) {
                            testData.push([]);
                            counter++;
                        } else {
                            testData[counter].push(data[i]);
                        }
                    }
                }

                console.log(data);

                resolve();
            });
        });
    }

    let score = 0;

    getTorpedoData('./SlimeTorpedo.blf', 'torpedo').then((data) => {
        getTestData('./TestData.blf', 'testData').then(() => {
            torpedo.forEach((torpedoArray, torpedoIndex) => {
                torpedoArray.filter((contents) => {
                    if (contents === '+') {
                        testData.forEach((testDataArray) => {
                            testDataArray.filter((dataContents, dataIndex) => {
                                // console.log(dataContents);
                                if (dataContents === '+') {
                                    if (torpedoIndex === dataIndex) {
                                        score++;
                                    }
    //                              console.log(score);
                                }
                            });
                        });
                    }
                });
            });
        });
    });
我创建了3个阵列鱼雷、星际飞船和测试数据。我读了所有这些文件,并把它们放在上面的多维数组中。然后我试图在testData数组中找到比较鱼雷数组的索引。然而,有一件事我做错了。我怎样才能修好它

[由Spektre编辑]

测试数据的测试结果,包括此数据和@greybeard链接中的数据:


红色表示不匹配,黄色表示匹配。分数因匹配而递增,因不匹配而递减。x从零开始向右计数,y从零开始向下计数,但您的数据被空行放大,因此您可以从1开始计数…

您正在寻找类似的数据吗

//创建我们的图像:鱼雷对象和背景上下文 var object=+\n++\n++\n++++++++\n++++\n++++++\n++++++++\n++++++\n++++++\n++++\n++\n++++\n++++++\n++++++, 上下文=++++++++\n++++++++++++++++++++++\n++++++++++++++++\n++++++++++++\n++++++++++++++\n++++++++++++++++++++\n++++++++++++\n++++++++++++++\n++++++++++++++++++++++\n++++++++++++++++++\n++++++++++++++\n++++++++++++++\n++ + + + ++ + + + ++ ; var c=document.getElementByIdtest\u画布, ctx=c.getContext2d, 比例=10; //在画布上画一个像素 函数绘制\u像素X、y、填充\u样式{ ctx.fillStyle=填充样式; ctx.fillRectx*比例,y*比例,比例,比例; } //接收坐标数组,绘制像素 函数draw_imageserialized_图像,填充_样式{ 对于变量i=0,len=serialized_image.length;i对于a=d=0;a你在找这样的东西吗

//创建我们的图像:鱼雷对象和背景上下文 var object=+\n++\n++\n++++++++\n++++\n++++++\n++++++++\n++++++\n++++++\n++++\n++\n++++\n++++++\n++++++, 上下文=++++++++\n++++++++++++++++++++++\n++++++++++++++++\n++++++++++++\n++++++++++++++\n++++++++++++++++++++\n++++++++++++\n++++++++++++++\n++++++++++++++++++++++\n++++++++++++++++++\n++++++++++++++\n++++++++++++++\n++ + + + ++ + + + ++ ; var c=document.getElementByIdtest\u画布, ctx=c.getContext2d, 比例=10; //在画布上画一个像素 函数绘制\u像素X、y、填充\u样式{ ctx.fillStyle=填充样式; ctx.fillRectx*比例,y*比例,比例,比例; } //接收坐标数组,绘制像素 函数draw_imageserialized_图像,填充_样式{ 对于变量i=0,len=serialized_image.length;i对于a=d=0;a,我真的不清楚……什么是测试数据,它代表什么,它是如何组织的?你想要实现什么?到底出了什么问题?如果问题与链接QA相同,那么为什么要发布新问题?你使用了什么搜索方法?或者我们应该分析你的未注释代码,猜测你有什么问题注意?在目前的状态下,如果不是赏金,我会投反对票。你能在问题中加入一个链接,或者把这个问题中的一个整块引用变成一个整块引用吗?我发现没有比@Spektre更好的了。这是我想要的,但在javascript中是这样的。@2619你现在的c有什么问题吗ode?我有些地方做错了,这对我来说真的很不清楚…什么是测试数据,它代表什么,它是如何组织的?你想要实现什么?到底错在哪里?如果问题与链接QA相同,那么为什么要发布新问题?你使用了什么搜索方法,或者我们应该分析你的未注释代码猜猜你在想什么?在目前的状态下,如果不是赏金,我会投反对票。你能在这个问题中加入一个链接到一个体面的问题陈述,或者把一个整块引用变成一个整块引用吗?我发现没有比@Spektre更好的了。如果你查看这个链接。这是我想要的,但是在javascript中。@2619,问题是什么你现在的密码有问题吗?我有点做错了