ProjectEuler.net problem 54. Покер.

топ 100 блогов yantayga06.03.2011 Я сам человек не азартный, и в карты последний раз играл довольно давно, лет 15 назад, да и то, не в покер, а в преферанс. В общем, не по душе была мне эта задачка, посему и код получился немного уродлив. Желающие раскритиковать - всегда пожалуйста. :)

module where

DataList
DataOrd
DebugTrace

Val C2 C3 C4 C5 C6 C7 C8 C9 CT J Q K A (, , , , )

Suit H C S D (, , , , )

Card Card val Valsuit Suitderiving EqOrdShowvals map suits map allEqual = allEqual ccs= (ccs

[] True
(:) True
(::) succ == && (:)

cs maximum vals )

[] (, )
cs maximumBy comparing ) isRoyalFlush = cs [, , , , ] isFlush isStraightFlush = cs isFlush nthSameVal n map \-> xcs x) filter \-> x n allEqual vals )$ cs

cs maxByFst nthSameVal 4

cs ((, ) (, $ $ rest )$ $ cs isFlush = (csisStraight = (csisThreeOfAKind = $ cs isTwoPair = \xrest-> xmaxByFst nthSameVal 2) maxByFst nthSameVal 2

cs maxByFst nthSameVal 2

Rank N1 Val| Val Val| Val [] N3 [] St Val| [] FH Val FOC | Val RF 
            
            (, , )

cs
  isRoyalFlush = | cs SF maximum rvals | foc FOC extractHeadVal foc
  nnf && fh FH extractHeadVal fh(snd )
  isFlush = $ cs
  isStraight = $ cs
  nnf = (fst ) rvals snd )
  nnf && n22' N22 extractHeadVal n22(fst ) rvals snd )
  nnf = (fst ) rvals snd )
  otherwise N1 rvals where 
    f = $ $ cs'
    cs reverse sort vals nnf = $ $ x
    x not null snd foc isFourOfAKind fh isFullHouse n3 isThreeOfAKind n22 isTwoPair n22' snd n2 isOnePair readVal = readVal = readVal = readVal = readVal = readVal = readVal = readVal = readVal = readVal = readVal = readVal = readVal = readSuit = readSuit = readSuit = readSuit = readCard s1s2[]= (s1(s2readLine = rank , g2where 
    = s
    = $ readCard take ws
    = $ readCard drop ws
    
:: ()
= l readFile 
        let = l
        r map ls
        print length filter $ (()r
        ()

Оставить комментарий

Архив записей в блогах:
Господи, сделай так, чтоб все криворукие парикмахеры стали лодочниками! Я вчера выходила из салона с таким обиженным лицом, что впору было протягивать мне платочек вместо зеркала. Закончилась моя сладкая жизнь - встал утром, вымыл голову и пошел. ...
Один из наших недостатков, человечества в смысле - это ментальные привязки, которые мы носим в себе, автоматически сравнивая всё чуждое с родным, идеальным. Как например любой салат с майонезом - сравниваем с оливье, селёдку с нашей селёдкой, суп с капустой - с борщом и т.д... Когда давным ...
Я помню, как напугало меня слегка прошлогоднее отключение света на площади ...
Соседи наши по общему тамбуру продолжают радовать. У них какая-то воронье-сорочья страть тащить в дом всякую поебень и украшать ею места общего пользования. Дизайн тамбура постоянно меняется. Сегодня с утра обнаружил пару новых шедеров. Вот как ...
Я часто думал раньше - почему Сапсан делает остановку на станции Угловка. Не Березайка, где живет, пожалуй, поболее народа, не Спирово, со славным городом Выдропужск (хорошее название!) поблизости, а именно Угловка. А теперь я знаю ...