Partie 1 J'ai écrit la réponse au problème de référence de l'écriture hors ligne en temps réel en Python

http://qiita.com/Nabetani/items/cbc3af152ee3f50a822f

import re
import itertools

SPEC = {
  "suit": ["S","H","D","C"],
  "rank": ["2","3","4","5","6","7","8","9","10","J","Q","K","A"],
  "hand": (
    ("4K", lambda x: max(snds(uniq_cnt(snds(x)))) == 4),
    ("FH", lambda x: sorted(snds(uniq_cnt(snds(x)))) == sorted((2,3))),
    ("3K", lambda x: max(snds(uniq_cnt(snds(x)))) == 3),
    ("2P", lambda x: sorted(snds(uniq_cnt(snds(x)))) == sorted((2,2,1))),
    ("1P", lambda x: sorted(snds(uniq_cnt(snds(x)))) == sorted((2,1,1,1))),
    ("--", lambda x: True),
  )
}

def snds(l):
    return [v for (k,v) in l]

def uniq_cnt(l):
    return [(x[0],len(list(x[1]))) for x in itertools.groupby(sorted(l))]

def parser(suit,rank,**kwargs):
    return re.compile("([{suits}]+)([{ranks}]+)".format(suits=''.join(suit),ranks=''.join(rank)))

def main(arg):
    ls = parser(**arg['spec']).findall(arg['input'])
    print list( (k for (k,f) in arg['spec']['hand'] if f(ls)) )[0]

if __name__ == "__main__":
    import sys
    arg={
      "spec": SPEC,
      "input": sys.argv[1],
    }
    main(arg)

Recommended Posts

Partie 1 J'ai écrit la réponse au problème de référence de l'écriture hors ligne en temps réel en Python
Le 15e comment écrire un problème de référence en temps réel hors ligne en Python
Le 14ème problème de référence d'écriture en temps réel hors ligne en python
Le 18ème comment écrire un problème de référence en temps réel hors ligne en Python
17ème problème de référence d'écriture en temps réel hors ligne implémenté en Python
Le 15e temps réel hors ligne, j'ai essayé de résoudre le problème de l'écriture avec python
J'ai écrit le code pour écrire le code Brainf * ck en python
Comment écrire en temps réel hors ligne Résolution des problèmes E04 avec Python
Comment écrire hors ligne en temps réel J'ai essayé de résoudre E11 avec python
Le 16ème comment écrire un problème de référence en temps réel hors ligne à résoudre avec Python
Le 19ème comment écrire un problème de référence en temps réel hors ligne à résoudre avec Python
Comment écrire en temps réel hors ligne J'ai essayé de résoudre E12 avec python
Comment écrire un exemple d'implémentation Python du problème E15 en temps réel hors ligne
Comment écrire hors ligne en temps réel Résolution des problèmes F01 avec Python
Réponse à "Comment écrire le problème F02 en temps réel hors ligne"
Réponse à "Comment écrire un problème F01 en temps réel hors ligne"
Le 15e problème d'écriture en temps réel hors ligne a été résolu avec python
Réponse au "Problème d'écriture en temps réel hors ligne E13"
Un exemple de réponse à la question de référence de la session d'étude. Avec python.
20e Comment écrire des problèmes en temps réel hors ligne en Python
Comment obtenir le nombre de chiffres en Python
Je veux écrire en Python! (3) Utiliser des simulacres
Comment écrire un exemple d'implémentation E14 Python en temps réel hors ligne
J'ai écrit la file d'attente en Python
J'ai écrit la pile en Python
[Question] Comment obtenir les données des données textarea en temps réel à l'aide du flacon du framework Web Python
J'ai écrit un doctest dans "J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python"
J'ai essayé de décrire le trafic en temps réel avec WebSocket
J'ai comparé le temps de calcul de la moyenne mobile écrite en Python
Comment connaître la structure interne d'un objet en Python
17e comment résoudre les problèmes d'écriture en temps réel hors ligne avec Python
Comment vérifier la taille de la mémoire d'une variable en Python
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Comment écrire Ruby to_s en Python
Comment couper la partie inférieure droite de l'image avec Python OpenCV
Comment écrire le bon shebang dans les scripts Perl, Python et Ruby
Comment obtenir la différence de date et d'heure en secondes avec Python
Je veux convertir par lots le résultat de "chaîne de caractères" .split () en Python
Je veux expliquer en détail la classe abstraite (ABCmeta) de Python
Je veux colorer une partie de la chaîne Excel avec Python
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Python: je souhaite mesurer proprement le temps de traitement d'une fonction
Comment utiliser la bibliothèque C en Python
Résumé de la façon d'importer des fichiers dans Python 3
Le 18ème problème d'écriture en temps réel hors ligne en Python
Comment mesurer le temps d'exécution avec Python Partie 1
Comment obtenir les fichiers dans le dossier [Python]
Le 19ème problème d'écriture en temps réel hors ligne en Python
Je veux afficher la progression en Python!
Comment mesurer le temps d'exécution avec Python, partie 2
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
[Examen d'ingénieur d'information de base] J'ai écrit l'algorithme de la méthode de division mutuelle euclidienne en Python.
Je souhaite utiliser Python dans l'environnement de pyenv + pipenv sous Windows 10
Comment trouver le coefficient de la courbe approximative passant par les sommets en Python
Je souhaite stocker les résultats de% time, %% time, etc. dans un objet (variable)
Comment obtenir une liste de fichiers dans le même répertoire avec python
(Journal 1) Comment créer, parcourir et enregistrer des données dans la base de données SQL du service Microsoft Azure avec python
Je veux écrire en Python! (1) Vérification du format de code
Comment récupérer la nième plus grande valeur en Python
J'ai essayé de résumer comment utiliser matplotlib de python
Comment écrire une concaténation de chaînes sur plusieurs lignes en Python