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 сортируется. Я, честно говоря, не знаю как отсортировать в обратном порядке. Поэтому мне нужно смотреть на последний и предпоследний элементы. Правильно?