<commit_before>The aim of card_pass.py is to help determine card passing strategy after the cards have been dealt, assuming no (Grand) Tichu.

First job is to determine which cards to send (including to your partner).

Idea No1:
  +  count which cards sent breaks the least combinations

Points to consider:
  +  long row is worth more than a pair
  +  Ace is worth more than a pair of 2s
  +  Drake, Dog are ignored
  +  Mah Jongg will not be sent


Idea No2:
  +  send cards from other players randomly, learn which cards would've broken the least combinations

Points to consider:
  +  needs writing a learning AI


Second job is to determine which card to send where.

Idea No1:
  +  you usually want to send highest of the three for the partner

Idea No2:
  +  you want enemy to have as little combinations as possible

Points to consider:
  +  Points from Idea No1 on determining cards sent

Idea No3:
  +  assume players can play better than I write code, and count combinations with the cards got without them sending any (each "enemy" has +3 cards as their partner got the card they didn't send)

Idea No4:
  +  define passing strategies in code
  +  test each passing strategy for all picking strategies for all hands generated
  +  count combinations
  +  report<commit_msg>Added third idea how to "decide" on which card to send.<commit_after>The aim of card_pass.py is to help determine card passing strategy after the cards have been dealt, assuming no (Grand) Tichu.

First job is to determine which cards to send (including to your partner).

Idea No1:
  +  count which cards sent breaks the least combinations

Points to consider:
  +  long row is worth more than a pair
  +  Ace is worth more than a pair of 2s
  +  Drake, Dog are ignored
  +  Mah Jongg will not be sent


Idea No2:
  +  send cards from other players randomly, learn which cards would've broken the least combinations

Points to consider:
  +  needs writing a learning AI

Idea No3:
  +  download play logs and read hands and cards passed


Second job is to determine which card to send where.

Idea No1:
  +  you usually want to send highest of the three for the partner

Idea No2:
  +  you want enemy to have as little combinations as possible

Points to consider:
  +  Points from Idea No1 on determining cards sent

Idea No3:
  +  assume players can play better than I write code, and count combinations with the cards got without them sending any (each "enemy" has +3 cards as their partner got the card they didn't send)

Idea No4:
  +  define passing strategies in code
  +  test each passing strategy for all picking strategies for all hands generated
  +  count combinations
  +  report
{'fraction_non_alphanumeric': 0.036207540126913025, 'fraction_numerical': 0.0070921985815602835, 'mean_word_length': 3.573378839590444, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1406449', 'n_tokens_mistral': 749, 'n_tokens_neox': 723, 'n_words': 426}