Существует ли изящный способ иметь дело с Тузом в Блэк джеке?

Вы должны использовать генераторы Python. Кроме того, печать замедляет процесс.

Ниже приведено несколько примеров использования генераторов:

Генератор Python для чтения больших файлов CSV

Ленивый метод для чтения больших файлов в Python? [111 ]

14
задан John Munsch 8 May 2009 в 02:08
поделиться

4 ответа

Просто относитесь к каждому тузу как 11. Затем, когда значение больше 21, вычтите 10 из вашей суммы для каждого туза в вашей руке.

24
ответ дан 1 December 2019 в 06:59
поделиться

No matter what every ace should be counted to sum value as 11, then when the total sum has reached over 21 subtract 10 from hand, but the thing is you must make sure you keep a count of how many times you subtract 10 and how many times you add 11( an ace),

add 11 >= subtract 10 -must always be satisfied

alorithm example:

int sum=0;
int ace=0;
int subtract=0;
while(!busted or !stay)
{
  Hitme(value);
  if(value=11)ace++;
  sum+=value;
  if(sum>21) 
  {
      if(ace>=1)
      {
         if(ace>=subtract)
         {
           sum-=10
           subtract++;
         }
         else
         {
            busted;
         }
      }
      else
      {
          busted;
      }
  }
  else
  {
    hit or stay;
    //of course if sum== 21 then force stay

  }
}
3
ответ дан 1 December 2019 в 06:59
поделиться

Проблема в том, что он не определен: вы можете считать (как я понимаю правила) туза как 1 или 11. Но вы знаете, что вы не будете считать его как 11 каждый раз, потому что вы будете бюст.

Единственное решение, которое я думаю, состоит в том, чтобы вычислить оценку для каждого возможного значения туза, где сумма <= 21.

-1
ответ дан 1 December 2019 в 06:59
поделиться

Вы будете использовать только 1 туз для 11 очков. Таким образом, все, кроме последнего туза, рассчитываются как 1, и если набрано 10 или меньше очков, последний туз считается как 10.

7
ответ дан 1 December 2019 в 06:59
поделиться
Другие вопросы по тегам:

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