Алгоритм вывода - перестановка значений из текстового поля и отображение результата ниже? - PullRequest
1 голос
/ 06 августа 2020

У меня проблемы с перестановкой значений.

 <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 для чтения значений, поиска всех комбинаций и отображения результатов.

1 Ответ

0 голосов
/ 08 августа 2020

Вот оно. Я адаптировал функцию 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>
...