Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

(*.*)


Сообщения: 36564
Благодарности: 6696

Профиль | Сайт | Отправить PM | Цитировать


hasherfrog
LOL
Цитата:
Т.е. "сдать пять карт"?
Да, пять неповторяющихся карт.
Цитата:
Нужно просто сказать, какая комбинация карт получилась из сданных пяти?
Ок, можно и так сказать. Не вижу принципиальной разницы между этим и тем, что я сказал Наверное, твой вариант проще Спасибо за ответы.

Насчет тасования колоды я понял идею, но не слишком понял реализацию. Что делает следующий код?
Код: Выделить весь код
for i := N downto 2 do begin
    K := Random(i) + 1;
    Swap(Mas[K], Mas[i]);
Конкретнее, downto2 do begin вообще непонятно, сорри.

А для подсчета совпадений номиналов твой вариант действительно проще. Общая идея, как я вижу, такая же: отталкиваемся от факта, что у нас не более двух различных совпадающих номиналов карт. Однако исполнение намного проще. Мне как-то в голову не пришло использовать целочисленое деление
Я сделал так. Допустим, у меня уже есть массив Hand(4), 5 элементов которого являются случайными числами от 0 до 51. Теперь создается массив HandFaces(12) для номиналов
Код: Выделить весь код
  Dim HandFaces(12) As Integer
        For i = 0 To 12
            HandFaces(i) = 0
        Next
и все элементы наполняются нулями. Затем для каждого элемента из массива Hand выполняется целочисленное деление, получившееся число становится индексом массива HandFaces и значение данного элемента увеличивается на единицу.
Код: Выделить весь код
        For i = 0 To 4
            HandFaces(Hand(i) \ 4) += 1
        Next
Я правильно понял? Затем массив HandFaces сортируется. Я, честно говоря, не знаю как отсортировать в обратном порядке. Поэтому мне нужно смотреть на последний и предпоследний элементы. Правильно?

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 00:46, 19-04-2005 | #7