首页 > 解决方案 > Pin 算法 - 从文本框中排列值并显示下面的结果?

问题描述

我在置换值时遇到了麻烦。

 <head>
    <link rel="stylesheet" type="text/css" href="PinStyle.css"/>  
    </head>
    
    <body onload="startTime()">
    <h1><div id="txt"></div></h1>
    <br>
    
    <h1>Pin Algorithm</h1>
    
    <div class="container"
    <form action="/action_page.php">
      <input type="text" name="message" id="myInput1" value="" maxlength="1">
      <input type="text" name="message" id="myInput2" value="" maxlength="1">
      <input type="text" name="message" id="myInput3" value="" maxlength="1">
      <input type="text" name="message" id="myInput4" value="" maxlength="1"><br><br>
      <input id="demo" type="button" value="Permutation" onclick="permute()" /><br/>
    </form>
    <p id="demo"></p>

这些是我的文本框输入

 var test1 = "test1";
    test1 = document.getElementById("myInput1").value;
var test2 = "test2";
    test2 = document.getElementById("myInput2").value;
var test3 = "test3";
    test3 = document.getElementById("myInput3").value;
var test4 = "test4";
    test4 = document.getElementById("myInput4").value;

var permArr = [],
  usedChars = [];

function permute(test1,test2,test3,test4) {
  var i, ch; 
 input=[test1,test2,test3,test4]
  for (i = 0; i < input.length; i++) {
    ch = input.splice(i, 1)[0];
    usedChars.push(ch);
    if (input.length == 0) {
      permArr.push(usedChars.slice());
    }
    permute(input);
    input.splice(i, 0, ch);
    usedChars.pop();
  }
  return permArr
};
document.write(JSON.stringify(permute(var test1,test2,test3,test4)));
var combinations = permute(input);
document.getElementById("demo").innerHTML = combinations;
</script>
</div>
</body>

这是置换输入文本框中的值的代码,我无法让 javascript 读取值、查找所有组合并显示结果。

标签: javascripthtmlalgorithmpermutationscript-tag

解决方案


这里是。我根据这个问题的接受答案改编了 perm() 函数,该函数进行实际排列。

<form action="/action_page.php">
  <input type="text" name="message" id="myInput1" value="5" maxlength="1" size="1">
  <input type="text" name="message" id="myInput2" value="9" maxlength="1" size="1">
  <input type="text" name="message" id="myInput3" value="6" maxlength="1" size="1">
  <input type="text" name="message" id="myInput4" value="2" maxlength="1" size="1">
  <input type="button" value="Permutation" onclick="permute()" />
</form>

<p id="demo"></p>

<script>

  function permute() {
    // Create an array with the values of all inputs
    const ar = [document.getElementById("myInput1").value,
      document.getElementById("myInput2").value,
      document.getElementById("myInput3").value,
      document.getElementById("myInput4").value];

    // Get array of permutations
    const permutations = perm(ar);

    // Convert array to string before printing it
    document.getElementById("demo").innerHTML = JSON.stringify(permutations);
  }

  function perm(ar) {
    let ret = [];

    for (let i = 0; i < ar.length; i = i + 1) {
      let rest = perm(ar.slice(0, i).concat(ar.slice(i + 1)));

      if(rest.length) {
        for(let j = 0; j < rest.length; j = j + 1) {
          ret.push([ar[i]].concat(rest[j]))
        }
      } else {
        ret.push([ar[i]]);
      }
    }
    return ret;
  }
  
</script>


推荐阅读