Слияние кода завершено, страница обновится автоматически
Импорт данных:
data = Characters[
Partition[#, 5] & /@ Import["p054_poker.txt", "Table"]
] /. Thread[Characters@"23456789TJQKA" -> Range@13];
Даём определение правилам:
consecutiveQ = Differences@Sort@#[[;;, 1]] === {1,1,1,1} &;
pickMaxValue = Max@#[[;;, 1]] &;
rules = {
straightFlush:{OrderlessPatternSequence[{_,sameSuit_} ..]} ? consecutiveQ :> {9, pickMaxValue@straightFlush},
fourOfAKind:{OrderlessPatternSequence[{sameValue_,_} ..,_]} :> {8, sameValue},
fullHouse:{OrderlessPatternSequence[{sameValueA_|sameValueB_,_} ..]} :> {7, pickMaxValue@fullHouse},
flush:{OrderlessPatternSequence[{_,sameSuit_} ..]} :> {6, pickMaxValue@flush},
straight_?consecutiveQ :> {5, pickMaxValue@straight},
threeOfAKind:{OrderlessPatternSequence[{sameValue_,_} ..,_,_]} :> {4, sameValue},
twoPairs:{OrderlessPatternSequence[{sameValueA_|sameValueB_,_} ..,_]} :> {3, Max[sameValueA, sameValueB]},
onePair:{OrderlessPatternSequence[{sameValue_,_} ..,_,_,_]} :> {2, sameValue},
highCard_ :> {1, pickMaxValue@highCard}
};
Считаем и засекаем время:
AbsoluteTiming@Count[Replace[data, rules, {2}], _?(Not@*OrderedQ)]
{0.133739, 376}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )