How to efficiently get combinations of array of tuples [int, string] and compare it? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Tapes, Trees, Trunks & TalliesHow to get a centered mean (excluding max and min value) of a list in Python?Get argument as unicode string from argparse in Python 2 and 3Find and display best Poker handAlgorithm that receives a dictionary, converts it to a GET string, and is optimized for big datahow to filter text from a string and convert it to dictionary and check for matching values in pythonControl the input of the user according to a sample string and get some info from itCompare an array with a file and form groups from elements of an array

Why are Kinder Surprise Eggs illegal in the USA?

What does the "x" in "x86" represent?

How can I make names more distinctive without making them longer?

Is the Standard Deduction better than Itemized when both are the same amount?

Naming the result of a source block

Echoing a tail command produces unexpected output?

List of Python versions

String `!23` is replaced with `docker` in command line

Identifying polygons that intersect with another layer using QGIS?

Using audio cues to encourage good posture

Output the ŋarâþ crîþ alphabet song without using (m)any letters

What is Wonderstone and are there any references to it pre-1982?

What exactly is a "Meth" in Altered Carbon?

How to answer "Have you ever been terminated?"

How to find all the available tools in mac terminal?

Why did the rest of the Eastern Bloc not invade Yugoslavia?

Seeking colloquialism for “just because”

Why did the Falcon Heavy center core fall off the ASDS OCISLY barge?

Short Story with Cinderella as a Voo-doo Witch

How to align text above triangle figure

What does an IRS interview request entail when called in to verify expenses for a sole proprietor small business?

How to bypass password on Windows XP account?

How come Sam didn't become Lord of Horn Hill?

Fundamental Solution of the Pell Equation



How to efficiently get combinations of array of tuples [int, string] and compare it?



Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Tapes, Trees, Trunks & TalliesHow to get a centered mean (excluding max and min value) of a list in Python?Get argument as unicode string from argparse in Python 2 and 3Find and display best Poker handAlgorithm that receives a dictionary, converts it to a GET string, and is optimized for big datahow to filter text from a string and convert it to dictionary and check for matching values in pythonControl the input of the user according to a sample string and get some info from itCompare an array with a file and form groups from elements of an array



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








0












$begingroup$


Just wondering if there is a way to run the piece of code below more efficiently. I just started to get acquainted with parallel program and think this might be an answer? But I have no idea how to do it using imap or processes...any help?



This is what the function is doing: it gets two arrays of tuples with 5 items each - hand = [H1,H2,H3,H4,H5] and board = [B1,B2,B3,B4,B5]



What I need to do is check all arrays formed by 2 items from hand and 3 items from board, like combination = [Hn,Hm,Bi,Bj,Bk] (100 combinations in total)



Then I need to compare each one of the combinations against a dictionary to get the combination rank, and then return the best array (best rank) and the rank itself:



def check_hand(hand, board, dictionary_A, dictionary_B):

best_hand = []
first_int = True

for h1 in range (0, 4):
for h2 in range (h1+1, 5):
for b1 in range (0, 3):
for b2 in range (b1+1, 4):
for b3 in range (b2+1, 5):
hand_check = []
hand_check.append(mao[m1])
hand_check.append(mao[m2])
hand_check.append(board[b1])
hand_check.append(board[b2])
hand_check.append(board[b3])
hand_check = sort(hand_check) //Custom sort for my array of objects
hand_ranks = "".join([str(hand_check[0].rank),str(hand_check[1].rank),str(hand_check[2].rank),str(hand_check[3].rank),str(hand_check[4].rank)])

if (hand_check[0].suit == hand_check[1].suit and hand_check[1].suit == hand_check[2].suit and hand_check[2].suit == hand_check[3].suit and hand_check[3].suit == hand_check[4].suit):
control = [dictionary_A[hand_ranks][0],dictionary_A[hand_ranks][1]]
else:
control = [dictionary_B[hand_ranks][0],dictionary_B[hand_ranks][1]]

if first_int:
best_hand = hand_check
rank = control
first_int = False
elif (int(control[0]) > int(rank[0])):
rank = control
best_hand = hand_check
elif (int(control[0]) == int(rank[0])):
if (int(control[1]) > int(rank[1])):
rank = control
best_hand = hand_check

return best_hand, rank[0]


I need to run this check for 2 million different hands and interact over 1000 times for every hand (Ideally I would run it for at least 100000 times for every hand, for a more statistically accurate result).
Any ideas on how to make it more efficient?









share







New contributor




Vandré Dreer Bonaite is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$


















    0












    $begingroup$


    Just wondering if there is a way to run the piece of code below more efficiently. I just started to get acquainted with parallel program and think this might be an answer? But I have no idea how to do it using imap or processes...any help?



    This is what the function is doing: it gets two arrays of tuples with 5 items each - hand = [H1,H2,H3,H4,H5] and board = [B1,B2,B3,B4,B5]



    What I need to do is check all arrays formed by 2 items from hand and 3 items from board, like combination = [Hn,Hm,Bi,Bj,Bk] (100 combinations in total)



    Then I need to compare each one of the combinations against a dictionary to get the combination rank, and then return the best array (best rank) and the rank itself:



    def check_hand(hand, board, dictionary_A, dictionary_B):

    best_hand = []
    first_int = True

    for h1 in range (0, 4):
    for h2 in range (h1+1, 5):
    for b1 in range (0, 3):
    for b2 in range (b1+1, 4):
    for b3 in range (b2+1, 5):
    hand_check = []
    hand_check.append(mao[m1])
    hand_check.append(mao[m2])
    hand_check.append(board[b1])
    hand_check.append(board[b2])
    hand_check.append(board[b3])
    hand_check = sort(hand_check) //Custom sort for my array of objects
    hand_ranks = "".join([str(hand_check[0].rank),str(hand_check[1].rank),str(hand_check[2].rank),str(hand_check[3].rank),str(hand_check[4].rank)])

    if (hand_check[0].suit == hand_check[1].suit and hand_check[1].suit == hand_check[2].suit and hand_check[2].suit == hand_check[3].suit and hand_check[3].suit == hand_check[4].suit):
    control = [dictionary_A[hand_ranks][0],dictionary_A[hand_ranks][1]]
    else:
    control = [dictionary_B[hand_ranks][0],dictionary_B[hand_ranks][1]]

    if first_int:
    best_hand = hand_check
    rank = control
    first_int = False
    elif (int(control[0]) > int(rank[0])):
    rank = control
    best_hand = hand_check
    elif (int(control[0]) == int(rank[0])):
    if (int(control[1]) > int(rank[1])):
    rank = control
    best_hand = hand_check

    return best_hand, rank[0]


    I need to run this check for 2 million different hands and interact over 1000 times for every hand (Ideally I would run it for at least 100000 times for every hand, for a more statistically accurate result).
    Any ideas on how to make it more efficient?









    share







    New contributor




    Vandré Dreer Bonaite is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.







    $endgroup$














      0












      0








      0





      $begingroup$


      Just wondering if there is a way to run the piece of code below more efficiently. I just started to get acquainted with parallel program and think this might be an answer? But I have no idea how to do it using imap or processes...any help?



      This is what the function is doing: it gets two arrays of tuples with 5 items each - hand = [H1,H2,H3,H4,H5] and board = [B1,B2,B3,B4,B5]



      What I need to do is check all arrays formed by 2 items from hand and 3 items from board, like combination = [Hn,Hm,Bi,Bj,Bk] (100 combinations in total)



      Then I need to compare each one of the combinations against a dictionary to get the combination rank, and then return the best array (best rank) and the rank itself:



      def check_hand(hand, board, dictionary_A, dictionary_B):

      best_hand = []
      first_int = True

      for h1 in range (0, 4):
      for h2 in range (h1+1, 5):
      for b1 in range (0, 3):
      for b2 in range (b1+1, 4):
      for b3 in range (b2+1, 5):
      hand_check = []
      hand_check.append(mao[m1])
      hand_check.append(mao[m2])
      hand_check.append(board[b1])
      hand_check.append(board[b2])
      hand_check.append(board[b3])
      hand_check = sort(hand_check) //Custom sort for my array of objects
      hand_ranks = "".join([str(hand_check[0].rank),str(hand_check[1].rank),str(hand_check[2].rank),str(hand_check[3].rank),str(hand_check[4].rank)])

      if (hand_check[0].suit == hand_check[1].suit and hand_check[1].suit == hand_check[2].suit and hand_check[2].suit == hand_check[3].suit and hand_check[3].suit == hand_check[4].suit):
      control = [dictionary_A[hand_ranks][0],dictionary_A[hand_ranks][1]]
      else:
      control = [dictionary_B[hand_ranks][0],dictionary_B[hand_ranks][1]]

      if first_int:
      best_hand = hand_check
      rank = control
      first_int = False
      elif (int(control[0]) > int(rank[0])):
      rank = control
      best_hand = hand_check
      elif (int(control[0]) == int(rank[0])):
      if (int(control[1]) > int(rank[1])):
      rank = control
      best_hand = hand_check

      return best_hand, rank[0]


      I need to run this check for 2 million different hands and interact over 1000 times for every hand (Ideally I would run it for at least 100000 times for every hand, for a more statistically accurate result).
      Any ideas on how to make it more efficient?









      share







      New contributor




      Vandré Dreer Bonaite is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.







      $endgroup$




      Just wondering if there is a way to run the piece of code below more efficiently. I just started to get acquainted with parallel program and think this might be an answer? But I have no idea how to do it using imap or processes...any help?



      This is what the function is doing: it gets two arrays of tuples with 5 items each - hand = [H1,H2,H3,H4,H5] and board = [B1,B2,B3,B4,B5]



      What I need to do is check all arrays formed by 2 items from hand and 3 items from board, like combination = [Hn,Hm,Bi,Bj,Bk] (100 combinations in total)



      Then I need to compare each one of the combinations against a dictionary to get the combination rank, and then return the best array (best rank) and the rank itself:



      def check_hand(hand, board, dictionary_A, dictionary_B):

      best_hand = []
      first_int = True

      for h1 in range (0, 4):
      for h2 in range (h1+1, 5):
      for b1 in range (0, 3):
      for b2 in range (b1+1, 4):
      for b3 in range (b2+1, 5):
      hand_check = []
      hand_check.append(mao[m1])
      hand_check.append(mao[m2])
      hand_check.append(board[b1])
      hand_check.append(board[b2])
      hand_check.append(board[b3])
      hand_check = sort(hand_check) //Custom sort for my array of objects
      hand_ranks = "".join([str(hand_check[0].rank),str(hand_check[1].rank),str(hand_check[2].rank),str(hand_check[3].rank),str(hand_check[4].rank)])

      if (hand_check[0].suit == hand_check[1].suit and hand_check[1].suit == hand_check[2].suit and hand_check[2].suit == hand_check[3].suit and hand_check[3].suit == hand_check[4].suit):
      control = [dictionary_A[hand_ranks][0],dictionary_A[hand_ranks][1]]
      else:
      control = [dictionary_B[hand_ranks][0],dictionary_B[hand_ranks][1]]

      if first_int:
      best_hand = hand_check
      rank = control
      first_int = False
      elif (int(control[0]) > int(rank[0])):
      rank = control
      best_hand = hand_check
      elif (int(control[0]) == int(rank[0])):
      if (int(control[1]) > int(rank[1])):
      rank = control
      best_hand = hand_check

      return best_hand, rank[0]


      I need to run this check for 2 million different hands and interact over 1000 times for every hand (Ideally I would run it for at least 100000 times for every hand, for a more statistically accurate result).
      Any ideas on how to make it more efficient?







      python dictionary multiprocessing





      share







      New contributor




      Vandré Dreer Bonaite is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.










      share







      New contributor




      Vandré Dreer Bonaite is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.








      share



      share






      New contributor




      Vandré Dreer Bonaite is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 2 mins ago









      Vandré Dreer BonaiteVandré Dreer Bonaite

      1




      1




      New contributor




      Vandré Dreer Bonaite is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Vandré Dreer Bonaite is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Vandré Dreer Bonaite is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.




















          0






          active

          oldest

          votes












          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "196"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );






          Vandré Dreer Bonaite is a new contributor. Be nice, and check out our Code of Conduct.









          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f217597%2fhow-to-efficiently-get-combinations-of-array-of-tuples-int-string-and-compare%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          Vandré Dreer Bonaite is a new contributor. Be nice, and check out our Code of Conduct.









          draft saved

          draft discarded


















          Vandré Dreer Bonaite is a new contributor. Be nice, and check out our Code of Conduct.












          Vandré Dreer Bonaite is a new contributor. Be nice, and check out our Code of Conduct.











          Vandré Dreer Bonaite is a new contributor. Be nice, and check out our Code of Conduct.














          Thanks for contributing an answer to Code Review Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f217597%2fhow-to-efficiently-get-combinations-of-array-of-tuples-int-string-and-compare%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          名間水力發電廠 目录 沿革 設施 鄰近設施 註釋 外部連結 导航菜单23°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.7113923°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.71139計畫概要原始内容臺灣第一座BOT 模式開發的水力發電廠-名間水力電廠名間水力發電廠 水利署首件BOT案原始内容《小檔案》名間電廠 首座BOT水力發電廠原始内容名間電廠BOT - 經濟部水利署中區水資源局

          Prove that NP is closed under karp reduction?Space(n) not closed under Karp reductions - what about NTime(n)?Class P is closed under rotation?Prove or disprove that $NL$ is closed under polynomial many-one reductions$mathbfNC_2$ is closed under log-space reductionOn Karp reductionwhen can I know if a class (complexity) is closed under reduction (cook/karp)Check if class $PSPACE$ is closed under polyonomially space reductionIs NPSPACE also closed under polynomial-time reduction and under log-space reduction?Prove PSPACE is closed under complement?Prove PSPACE is closed under union?

          Is my guitar’s action too high? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)Strings too stiff on a recently purchased acoustic guitar | Cort AD880CEIs the action of my guitar really high?Μy little finger is too weak to play guitarWith guitar, how long should I give my fingers to strengthen / callous?When playing a fret the guitar sounds mutedPlaying (Barre) chords up the guitar neckI think my guitar strings are wound too tight and I can't play barre chordsF barre chord on an SG guitarHow to find to the right strings of a barre chord by feel?High action on higher fret on my steel acoustic guitar