JQuery: массив и порядок - PullRequest
       7

JQuery: массив и порядок

0 голосов
/ 18 октября 2018

Можете ли вы мне помочь?

У меня проблемы:

Как вернуть число, являющееся наименьшим возможным числом, которое можно построить путем конкатенации всех полученных чисел.

Пример:

a.Вход: [1, 2, 3] -> Выход: 123

b.Вход: [1, 10, 100] -> Выход: 100101

c.Вход: [100, 97, 23, 1] -> Выход: 10012397

d.Вход: [9041, 376, 5, 10] -> Выход: 1037659041

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 10 ноября 2018

Это мой код, который решает проблемы (надеюсь, это может помочь всем, кому это нужно) на основе потока:

Сортировка JS

Fiddle

спасибо @ DavidWinder о подсказке перестановки

function submit()
{
  var num = [];
  var smallest = 9;

  //get the numbers
  $('input[name^="num"]').each(function()
  {
      if ($(this).val() != '')
      {
        num.push($(this).val());
      }
  });

  var letters = num.toString();
  var size = num.length;

  $('#result').empty();
    var testResults = permutate.getPermutations(letters, size);
    var min = 99999999;
    $.each(testResults, function(index, item)
    {
        // $('#result').append("<li>" + item + "</li>");
        if (item < min)
        {
          min = item;
        }
    });

    $('#result').html("Smallest possible number = " + min);
}



//====================================================
var permutate = (function()
{

  var results = [];

  function doPermute(input, output, used, size, level)
  {

      if (size == level)
      {
          var word = output.join('');
          results.push(word);
          return;
      }

      level++;

      for (var i = 0; i < input.length; i++)
      {

          if (used[i] === true)
          {
              continue;
          }

          used[i] = true;

          output.push(input[i]);

          doPermute(input, output, used, size, level);

          used[i] = false;

          output.pop();
      }
  }

  return {
      getPermutations: function(input, size)
      {

          var chars = input.split(',');
          var output = [];
          var used = new Array(chars.length);

          doPermute(chars, output, used, size, 0);

          return results;
      }
  }
})();
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>

  <input type="text" name="num[1]"> <br />
  <input type="text" value=74 name="num[2]"> <br />
  <input type="text" name="num[1]"> <br />
  <input type="text" value=36 name="num[2]"> <br />
  <input type="text" name="num[1]"> <br />
  <input type="text" name="num[2]"> <br />
  <input type="text" value=51 name="num[1]"> <br />
  <input type="text" value=98 name="num[2]"> <br />
  <input type="text" name="num[1]"> <br />
  <input type="text" name="num[2]"> <br />
  <input type="submit" id="submit" onclick="submit()">

  <div id='result'>Result</div>




</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...