Алгоритм для создания шестнадцатеричного числа лавинно рассылает загадку

Подобный ответу Oli, я использую Объект аргумента и Объект, который определяет значения по умолчанию. С небольшим количеством сахара...

/**
 * Updates an object's properties with other objects' properties. All
 * additional non-falsy arguments will have their properties copied to the
 * destination object, in the order given.
 */
function extend(dest) {
  for (var i = 1, l = arguments.length; i < l; i++) {
    var src = arguments[i]
    if (!src) {
      continue
    }
    for (var property in src) {
      if (src.hasOwnProperty(property)) {
        dest[property] = src[property]
      }
    }
  }
  return dest
}

/**
 * Inherit another function's prototype without invoking the function.
 */
function inherits(child, parent) {
  var F = function() {}
  F.prototype = parent.prototype
  child.prototype = new F()
  child.prototype.constructor = child
  return child
}

... это может быть сделано немного более хорошим.

function Field(kwargs) {
  kwargs = extend({
    required: true, widget: null, label: null, initial: null,
    helpText: null, errorMessages: null
  }, kwargs)
  this.required = kwargs.required
  this.label = kwargs.label
  this.initial = kwargs.initial
  // ...and so on...
}

function CharField(kwargs) {
  kwargs = extend({
    maxLength: null, minLength: null
  }, kwargs)
  this.maxLength = kwargs.maxLength
  this.minLength = kwargs.minLength
  Field.call(this, kwargs)
}
inherits(CharField, Field)

, Что хорошо об этом методе?

  • можно опустить столько аргументов, сколько Вам нравится - если Вы только хотите переопределить значение одного аргумента, можно просто обеспечить тот аргумент, вместо того, чтобы иметь необходимость явно передать undefined, когда, скажите, что существует 5 аргументов, и Вы только хотите настроить последний, поскольку Вы имели бы отношение к некоторым из других предложенных методов.
  • При работе с функцией конструктора для объекта, который наследовался от другого, легко принять любые аргументы, которые требуются конструктором Объекта, которому Вы наследовались, поскольку Вы не должны называть те аргументы в своей подписи конструктора, или даже обеспечивать, Ваши собственные значения по умолчанию (позвольте конструктору родительского объекта сделать это для Вас, как замечено выше когда CharField вызовы Field конструктор).
  • Дочерние объекты в иерархиях наследования могут настроить аргументы в пользу своего родительского конструктора, как они считают целесообразным, осуществляя их собственные значения по умолчанию или удостоверяясь, что определенное значение будет всегда использоваться.
6
задан Glorfindel 29 March 2019 в 06:00
поделиться

3 ответа

При выполнении шифрования RSA мы не находим простые числа, мы выбираем случайные числа и затем применяем к ним тесты, которые дают нам все более высокую вероятность того, что число является простым, без доказательства этого.

Я предлагаю то же самое. Постарайтесь найти условия, которые дают высокую вероятность того, что головоломка имеет желаемые свойства, и проверьте их. Или вы можете использовать генетические алгоритмы / нейронные сети и обучить их распознавать «хорошие» головоломки, что равносильно тому же.

1
ответ дан 17 December 2019 в 18:19
поделиться

Я бы попытался доказать, что он является NP-полным или в P, чтобы почувствовать сложные конфигурации.

Я бы также абстрагировался от шестиугольников и использовал представление в виде графика.

1
ответ дан 17 December 2019 в 18:19
поделиться

Я много играл в прямоугольную головоломку о наводнении ( http: // labpixies.com/gadget_page.php?id=10). Рад видеть версию Hex! Я думаю, что найти сложную игру так же просто: избегать появления больших блоков одного цвета в головоломке. По крайней мере, в прямоугольных случаях, которые я видел, почти все головоломки, которые можно решить за небольшое количество шагов, имеют большие цветные блоки.

PS Я думаю, что ваша «нижняя граница» неверна. При работе вперёд, если использовать хорошую стратегию, вы можете закончить за меньшее количество шагов. «Нижняя граница» на самом деле является верхней границей оптимального решения.

1
ответ дан 17 December 2019 в 18:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: