| Самое быстрое определение покерной комбинации   ID:24521 | 
Ср, 6 сентября 2006 23:27 [#] [») | 
     
      | 
 
	
	
	| YuDmAk | 
	 | 
	
	
	    
	    
	    
	
	
	
	  (иконки IM)
	Форумы CasinoGames 
	
	 | 
 
  | 
 
    
        Пусть у нас есть покерная рука из n карт. 
Задача: Необходимо с минимальной затратой процессорного времени определить ее старшинство. Двойных комбинаций нет. 
 
Сам и не раз писал подобные вещи, однако теперь жизненно нужен наибыстрейший алгоритм.  
 
Может у кого завалялся? 
Если нет, то можно и обсудить. 
Спасибо.
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24522   ответ на 24521   | 
Чт, 7 сентября 2006 00:22 («] [#] [») | 
     
      | 
 
	
	
	| Sharky | 
	 | 
	
	
	    
	    
	    
	
	
	
	  (иконки IM)
	Форумы CasinoGames 
	
	 | 
 
  | 
 
    
        Могу под заказ разработать на асм!?  
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24523   ответ на 24521   | 
Чт, 7 сентября 2006 02:06 («] [#] [») | 
     
      | 
 
	
	
	| korovin | 
	 | 
	
	
	    
	    
	    
	
	
	
	  (иконки IM)
	Форумы CasinoGames 
	
	 | 
 
  | 
 
    | 
        Ну у меня есть, n=3..7 Цена вопроса?
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24524   ответ на 24521   | 
Чт, 7 сентября 2006 03:22 («] [#] [») | 
     
      | 
 
	 | 
 
    | 
        сколько тактов на комбинацию?
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24525   ответ на 24521   | 
Чт, 7 сентября 2006 05:41 («] [#] [») | 
     
      | 
 
	
	
	| korovin | 
	 | 
	
	
	    
	    
	    
	
	
	
	  (иконки IM)
	Форумы CasinoGames 
	
	 | 
 
  | 
 
    
        | Цитата: |  | сколько тактов на комбинацию? |   Сложный вопрос, могу лиш пример привести: 
 
Анализ двухкарточной комбинации против случайной руки в холдеме при решении влоб требует (50*49)*(48*47*46*45*44)/5/4/3/2/2= 2 097 572 400 сравнении 7-карточных рук, т.е. 4 195 144 800 вызоов этой функции. Вся процедура на PIV3200 у меня занимает 165 сек, т.е. 127 тактов процессора. С другой стороны, таже процедура без вызова этих функций выполняется 122 сек. Т.о. на выполнение чисто функций определения руки уходит всего 33 такта ЦП. 
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24526   ответ на 24521   | 
Чт, 7 сентября 2006 05:51 («] [#] [») | 
     
      | 
 
	 | 
 
    
        | Korovin писал |  | Вся процедура на PIV3200 у меня занимает 165 сек, т.е. 127 тактов процессора. С другой стороны, таже процедура без вызова этих функций выполняется 122 сек. Т.о. на выполнение чисто функций определения руки уходит всего 33 такта ЦП. |   Что-то перебор у тебя многовато времени занимает. Получается, что перейти к следующему варианту в 4 раза дольше, чем определить силу комбинации, так? А размер таблиц? Мегабайты, десятки, сотни...?
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24527   ответ на 24521   | 
Чт, 7 сентября 2006 06:22 («] [#] [») | 
     
      | 
 
	 | 
 
    
        Да, и еще: 
 
| Korovin писал |  | Анализ двухкарточной комбинации против случайной руки в холдеме при решении влоб требует (50*49)*(48*47*46*45*44)/5/4/3/2/2= 2 097 572 400 сравнении 7-карточных рук, т.е. 4 195 144 800 вызоов этой функции. |   Ты каждый раз вычисляешь силу первой комбинации? Ведь можно обойтись меньшим количеством. Для первой С(50,5) = 2 118 760, для второй С(50,5)*С(45,2) = 2 097 572 400, всего 2 099 691 160. 
 
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24528   ответ на 24521   | 
Чт, 7 сентября 2006 07:23 («] [#] [») | 
     
      | 
 
	
	
	| korovin | 
	 | 
	
	
	    
	    
	    
	
	
	
	  (иконки IM)
	Форумы CasinoGames 
	
	 | 
 
  | 
 
    | 
        Все можно улучшить при желании. Однако цена вопроса так и не озвучена.
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24529   ответ на 24521   | 
Чт, 7 сентября 2006 07:47 («] [#] [») | 
     
      | 
 
	 | 
 
    
        | Korovin писал |  | Все можно улучшить при желании. Однако цена вопроса так и не озвучена. |   Я не к тому, что у тебя все плохо   скорее наоборот. Просто хотелось бы уточнить твою скорость, потому что при таком соотношении (4:1) разность может плавать существенно. А насчет цены -- видимо, автор темы хотел бы получить алгоритм на шару.
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24530   ответ на 24521   | 
Чт, 7 сентября 2006 15:20 («] [#] [») | 
     
      | 
 
	
	
	| YuDmAk | 
	 | 
	
	
	    
	    
	    
	
	
	
	  (иконки IM)
	Форумы CasinoGames 
	
	 | 
 
  | 
 
    
        Естественно бесплатно тут никто дарить не собирается, и это понятно было с самого начала. 
Дело в том, что передо мной встала непростая задача, и идеи отметаются одна за другой в силу гипердолгих вычислений. Однако сейчас некий путь уже намечен. Вопрос заключается в том, справятся ли мои коды с этой задачей. 
 
Поэтому предлагаю сравнить время определения комбинации  
" Ah Kh 5c 8d Js Qd 2h" и поделиться временами исполнения.  
 
З.Ы. Кстати, как в Delphi подсчитать такты ЦП? а то GetTickCount дает шаг в одну миллисекунду, что многовато. 
 
Цена вопроса:......даже не знаю, если анализатор Коровина по БД стоит 50$, то тут ИМХО и 30 должно быть достаточно, хотя деньги конечно смешные, однако если у кого-то есть готовый вариант, то почему бы не посодействовать?
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24531   ответ на 24521   | 
Чт, 7 сентября 2006 15:23 («] [#] [») | 
     
      | 
 
	 | 
 
    
        | YuDmAk писал |  |  Кстати, как в Delphi подсчитать такты ЦП? а то GetTickCount дает шаг в одну миллисекунду, что многовато. |    производишь искомую операцию миллион (10, 100 млн) раз, засекаешь время и делишь.
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24532   ответ на 24521   | 
Чт, 7 сентября 2006 15:24 («] [#] [») | 
     
      | 
 
	
	
	| YuDmAk | 
	 | 
	
	
	    
	    
	    
	
	
	
	  (иконки IM)
	Форумы CasinoGames 
	
	 | 
 
  | 
 
    
        Я так и понял, когда этот вопрос писал.  
Однако спасибо
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24533   ответ на 24521   | 
Чт, 7 сентября 2006 15:24 («] [#] [») | 
     
      | 
 
	
	
	| korovin | 
	 | 
	
	
	    
	    
	    
	
	
	
	  (иконки IM)
	Форумы CasinoGames 
	
	 | 
 
  | 
 
    
        | Цитата: |  | Поэтому предлагаю сравнить время определения комбинации |   В смысле одной комбинации??? Может есть смысл поставить ее в цикл из миллиона а потом разделить?
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24534   ответ на 24521   | 
Чт, 7 сентября 2006 15:31 («] [#] [») | 
     
      | 
 
	
	
	| YuDmAk | 
	 | 
	
	
	    
	    
	    
	
	
	
	  (иконки IM)
	Форумы CasinoGames 
	
	 | 
 
  | 
 
    
        у меня получилось 0,000033 сек, у кого еще как? 
 
Проц AMD Turion 64 2,4 ГигаГерц
 
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24535   ответ на 24521   | 
Чт, 7 сентября 2006 15:41 («] [#] [») | 
     
      | 
 
	
	
	| korovin | 
	 | 
	
	
	    
	    
	    
	
	
	
	  (иконки IM)
	Форумы CasinoGames 
	
	 | 
 
  | 
 
    | 
        Давай так, во сколько раз будет быстрее твоего, такая и цена в $ ок? А лучше рассказал бы что да для чего так жизнено надо, может кто и бесплатно помог бы...
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24536   ответ на 24521   | 
Чт, 7 сентября 2006 15:42 («] [#] [») | 
     
      | 
 
	 | 
 
    
        | YuDmAk писал |  у меня получилось 0,000033 сек, у кого еще как? 
Проц AMD Turion 64 2,4 ГигаГерц |   На одну комбинацию??? Если бы ты не написал марку проца, я бы подумал, что у тебя 80286.
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24537   ответ на 24521   | 
Чт, 7 сентября 2006 15:44 («] [#] [») | 
     
      | 
 
	 | 
 
    
        | Korovin писал |  | Давай так, во сколько раз будет быстрее твоего, такая и цена в $ ок? |    хех, я бы тоже от штуки баксов не отказался  
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24538   ответ на 24521   | 
Чт, 7 сентября 2006 15:49 («] [#] [») | 
     
      | 
 
	
	
	| Sharky | 
	 | 
	
	
	    
	    
	    
	
	
	
	  (иконки IM)
	Форумы CasinoGames 
	
	 | 
 
  | 
 
    | 
        Речь идет о чем вообще? Определить ценность руки, типа там пара, стрейт и т.п.?
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24539   ответ на 24521   | 
Чт, 7 сентября 2006 15:55 («] [#] [») | 
     
      | 
 
	
	
	| YuDmAk | 
	 | 
	
	
	    
	    
	    
	
	
	
	  (иконки IM)
	Форумы CasinoGames 
	
	 | 
 
  | 
 
    | 
        Ну да, надо определить, что там: пустая, АК, пара, две пары, тройка,  стрит, флеш, фул, сф, рояль.
        
     | 
 
 |  
  | 
    
    
    | Re: Самое быстрое определение покерной комбинации   ID:24540   ответ на 24521   | 
Чт, 7 сентября 2006 15:56 («] [#] [») | 
     
      | 
 
	 | 
 
    
        | Sharky писал |  | Речь идет о чем вообще? Определить ценность руки, типа там пара, стрейт и т.п.? |   Я так понял, о функции, позволяющей однозначно определить: вот эта рука сильнее той (или равна ей, или меньше), а не только "пара, стрейт и т.п".
        
     | 
 
 |  
  | 

 Время, затраченное на генерацию страницы: 0.02895 секунд