Рубрики
Без рубрики

Шафма палуба

Приветственные кодеры, геймеры и все другие уникальные группы людей в мире. Я здесь, чтобы … Tagged с JavaScript, Codenewbie.

Приветственные кодеры, геймеры и все другие уникальные группы людей в мире. Я здесь, чтобы обсудить еще один кодовый вызов под названием Shuffle Deck. Теперь название подразумевает, о чем эта проблема, но вот краткое объяснение. Учитывая массив, содержащий колоду карт и возвращает перетасованную версию. Так что это кажется прямолинейным, верно? Но что описывает перетасовку? Давайте сделаем шаг в реальную версию проблемы. Всякий раз, когда вы думаете о картах, о чем вы думаете в первую очередь? Моя первая мысль в том, что у вас есть дилер, и угадайте, что он делает. Обычно дилер знает эти сумасшедшие методы и может очень быстро перетасовать карты. Теперь подумайте об этом с компьютерной точки зрения. У нас уже есть скорость, но наш компьютер недостаточно умен, чтобы знать, что такое перетасовка. Способ, которым мы можем охватить наши базы, – это кодирование в моем случае JavaScript является источником мозга. Итак, давайте посмотрим на какой -то код.

const shuffleDeck = (deck) => {
  // duplicate the given deck
  const copyDeck = deck.slice();
  // create a new array to hold shuffled cards
  const shuffled = [];
  // find a way to loop through the copyDeck
  for (let i = copyDeck.length - 1; i >= 0; i--) {
    // this lets us create a new random index for later use in positioning
    const r = Math.floor(Math.random() * (i + 1));
    // destructor parts of the deck with the new random index
    [copyDeck[i], copyDeck[r]] = [copyDeck[r], copyDeck[i]];
    // push into shuffled the first card taken off the first index of copyDeck
    shuffled.push(copyDeck.pop());
  }
  // return shuffled deck after adding all the cards
  return shuffled;
};

Поэтому, глядя на код выше, вы можете увидеть, что мы используем JavaScript для диктата; Или скажите компьютеру выполнить определенные действия для нас. Когда мы призываем функцию выше с колодой, первое, что мы делаем,-это сделать копию пропущенного массива. Я объясню больше о том, почему мы делаем это позже. Итак, мы знаем, что нам нужно как -то переходить через наш массив. Мы можем сделать это, используя наш старый старый старый для петли. Я думаю, что петля назад интереснее Итак, я сделал это выше. Итак, теперь, когда мы даем самим собой доступ во внутреннюю часть колоды карт, мы теперь можем изменить индексы карт вокруг, т. Е. Шафля. Выше я использую этот супер интересный стиль под названием Destructuring. По сути, это позволяет нам передать наши желаемые значения, где наши целевые значения в настоящее время. Затем мы берем наш перетасованный массив и добавляем эти значения к новым значениям, которые мы откидываем из массива копий. Тогда мы можем вернуть пользователю эту оригинальную колоду карт, теперь перетасовали стиль перетасовки, где мы скопируем массив, называется чистой перетасовкой, так как мы не меняем оригинальный массив. Но есть и другой способ, которым мы можем сделать эту проблему, где мы на самом деле не копируем дублированный массив. Вместо этого мы просто вносим изменения в ток, пройденный в множестве карт. Этот стиль шатания считается нечистым или грязным шатмом, так как мы изменяем оригинальный массив. Код для грязного шатма будет выглядеть примерно так.

const shuffleDeck = (deck) => {
  // impure shuffle
  // no need to make a new array just loop though given array
  for (let i = deck.length - 1; i >= 0; i--) {
    // use the same Math method to get a new random index
     let r = Math.floor(Math.random() * (i + 1));
    // set the cards in the random index swapping them out with whats their already
    [deck[i], deck[r]] = [deck[r], deck[i]];
  }
  // return passed in deck with shuffled cards
  return deck;
};

В то время как приведенный выше код немного короче, чем чистый перетасовка, как все вещи, которые у него есть свои недостатки. Основным является то, что мы меняем пропущенное в массиве, от которого вы, как правило, вы хотите отклониться, так как вы можете использовать массив для других вещей, возможно. Но, как я сказал, это сокращает наш код, когда мы не копируем массив, и не толкаем и не выдвигаем и из разных массивов. В целом, я оцениваю этот код вызов 52 из 52.

Оригинал: “https://dev.to/naseerhines/shuffle-deck-3nj”