Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单词搜索解算器_Javascript_Arrays_Wordsearch - Fatal编程技术网

Javascript 单词搜索解算器

Javascript 单词搜索解算器,javascript,arrays,wordsearch,Javascript,Arrays,Wordsearch,我试着做一个单词搜索解算器。 因此,这个工具的目的是计算给定的单词在这个项目的网格a.k.a数组中出现的次数。但当我编写一个垂直检查的代码时,我被卡住了,它说“TypeError:无法读取未定义的属性'3'” 这是密码 var baris = [3]; var kolom = [8]; var kata = ["zpw"]; var puzzle= [ ["z","x","x","r","r","r","f","z"], ["p","l","q","z","h","h","r","p"]

我试着做一个单词搜索解算器。 因此,这个工具的目的是计算给定的单词在这个项目的网格a.k.a数组中出现的次数。但当我编写一个垂直检查的代码时,我被卡住了,它说“TypeError:无法读取未定义的属性'3'”

这是密码

var baris = [3];
var kolom = [8];
var kata = ["zpw"];
var puzzle= [
  ["z","x","x","r","r","r","f","z"],
  ["p","l","q","z","h","h","r","p"],
  ["w","o","l","p","p","o","o","w"]
 ];
var i;
var k;
var l;
var x;
var y;
var r=0;//left-right
var s=0;//right-left
var t=0;//up-down
var u=0;//down-up

var z=0;
var a=0;
var n=0;
var p=0;



function vertical() {
for (i=0;i<baris.length;i++) {

  for(k=p;k<(baris[i]+baris[i-1] ||baris[i]);k++ )   {

     for(l=0; l<kolom[i];l++) {  

      if(puzzle[k][l] == kata[i].charAt(0)) {     //up-down CHECKER
        for(y=1;y<kata[i].length ;y++) { 
          if(kata[i].charAt(y) == puzzle[k+y][l]) {
            n=n+1; 
           console.log(n);
          }

        }
         if(n==kata[i].length-1) {
         t=t+1;

          }
         n=0;
      }


    }
    //console.log(t);
  }


 t=0;
 u=0;
 p=p+baris[i];
 }

 }

 vertical();`
var baris=[3];
var kolom=[8];
var kata=[“zpw”];
变量谜题=[
[“z”、“x”、“x”、“r”、“r”、“f”、“z”],
[“p”、“l”、“q”、“z”、“h”、“h”、“r”、“p”],
[“w”、“o”、“l”、“p”、“p”、“o”、“o”、“w”]
];
var i;
var-k;
变种l;
var x;
变量y;
var r=0//左右的
var s=0//左右
var t=0//上下
var u=0//向下
var z=0;
var a=0;
var n=0;
var p=0;
函数垂直(){

对于(i=0;i我想你需要的是“清洁”代码,只需考虑算法,写在纸上,画在纸上,再思考,然后创建原型,然后重构,这样您就可以将算法划分为独立的函数。作为回报,您将获得更多更少的理解代码,这将是灵活的,真正的调试,准备改进和扩展

如我所见,你需要的东西将:

  • 从二维数组创建普通数组(或字符串)
  • 检查是否存在子字符串(或验证),它必须支持具有自定义字符偏移量的单词(因为原始数组是2D)
  • 检查子串连接的所有可能性
  • 以下是仓促编写的代码,没有任何“傻瓜保护”,只适用于行大小相同的“谜题”,可能会非常慢:

    // Join a 2D array into a plain string.
    function Join2DArray(array){
      var val = ""
      for(var i = 0; i < array.length; i++)
        val += array[i].join("")
      return val
    }
    
    // Check if substring exists at given position with given letters offset.
    function IsSubstring(str, subStr, pos, inc){ 
      var j = 0;
      for(var i = pos; i < str.length, j < subStr.length; i += inc, j++)
        if (str.charAt(i) != subStr.charAt(j)) return false
      if (j < subStr.length) return false
      return true
    }
    
    // Find all horizontal left->right and vertical up->down words.
    function GetWordCount(array2D, word){ 
      var rowCount = array2D.length
      var rowSize = array2D[0].length
      var string = Join2DArray(array2D)
      var wordLen = word.length
      var wordCount = 0;
      // Search in rows
      for(var j = 0; j < rowCount; j++)
        for (var i = 0; i <= rowSize - wordLen; i++)
          wordCount += IsSubstring(string, word, j * rowSize + i, 1)
      // Search in columns
      for(var i = 0; i < rowSize; i++)
        for(var j = 0; j <= rowCount - wordLen; j++)
          wordCount += IsSubstring(string, word, j * rowSize + i, rowSize)
      return wordLen > 1 ? wordCount : wordCount / 2
    }
    
    var puzzle = [['H', 'E', 'L', 'L', 'O'], 
                  ['E', ' ', ' ', ' ', ' '],
                  ['L', ' ', ' ', 'B', ' '],
                  ['L', 'I', 'B', 'R', 'O'],
                  ['O', ' ', ' ', 'O', ' ']]
    
    console.log("HELLO: " + GetWordCount(puzzle, "HELLO")); // 2
    console.log("BRO: " + GetWordCount(puzzle, "BRO")); // 2
    console.log("LIBRO: " + GetWordCount(puzzle, "LIBRO")); // 1
    console.log("O: " + GetWordCount(puzzle, "O")); // 4
    
    //将二维数组连接到普通字符串中。
    函数Join2DArray(数组){
    var val=“”
    对于(var i=0;i右和垂直向上->向下的单词。
    函数GetWordCount(array2D,word){
    var rowCount=array2D.length
    var rowSize=array2D[0]。长度
    var string=Join2DArray(array2D)
    var wordLen=word.length
    var-wordCount=0;
    //按行搜索
    对于(var j=0;j对于(var i=0;i)当您在调试器中单步执行此代码时,哪一行抛出错误?该行上的值是什么?您希望这些值或该行代码做什么?为什么?