Das 10. Referenzproblem beim Schreiben in Echtzeit. Implementierungsbeispiel von Python.

Veranstaltung: http://atnd.org/events/38678 Problem: http://nabetani.sakura.ne.jp/hena/ord10pokarest/ Antwortlinks: http://qiita.com/items/d819d1e5f2378317511e

Ich habe es in Python geschrieben. Bestätigt für die Arbeit mit 2.7.2 und 3.3.

ord10pokarest.py


#coding:utf-8
import re

def  isroyal( hand ) :
    ranks=sorted( [ r[0] for r in hand ] )
    return ranks==[1,10,11,12,13]

def  isstraight( hand ) :
    ranks=sorted( [ r[0] for r in hand ] )
    return (
        ranks==list( range( ranks[0], ranks[-1]+1) ) or 
        ranks==[1]+list( range( ranks[1], 14) ) )

def  isflash( hand ) :
    return len(set( [ r[1] for r in hand ] ))==1

def score( hand ):
    return (( 1 if isroyal( hand) else 0 ) +
    ( 2 if isstraight( hand) else 0 ) +
    ( 4 if isflash( hand) else 0 ) )

def rank( c ):
    if re.match( "\d", c ):
        return int(c)
    else:
        return { "J":11, "Q":12, "K":13, "A":1 }[c]

def solve( src ):
    hand = [ ( rank(c[0]), c[1] ) for c in re.findall( "([^shdc]+)([shdc])", src ) ]
    return (
        { 0:False, 7:"RF", 6:"SF", 4:"FL", 2:"ST", 3:"ST" }[
            score(hand)
        ] or { 0:False, 6:"4SF", 4:"4F", 2:"4S"}[
            max( [ score(h) for h in (
                [ hand[0:i]+hand[i+1:5] for i in range(0,5) ]
            ) ] )
        ] or "-" )


def test( samples ) :
    for line in samples.splitlines():
        a=re.split( "\s+", line ) # num, input, expected
        if len(a) != 3:
            continue
        actual = solve( a[1] )
        ok=actual==a[2]
        print( [ "ok" if ok else "***NG***", a, actual ] )

test( """
0   Qs9s3dJd10h 4S
1   KdAdJd10dQd RF
52  10dKdQdAdJd RF"""    )

Die meisten Testdaten werden weggelassen.

Die Ruby-Version (http://qiita.com/items/c6ebf2c1a9c750568e97) wurde unverändert portiert.

Bei der Portierung von Ruby ist es sehr frisch, eine Rückgabe schreiben zu müssen.

Ich wollte else for loop verwenden, hatte aber keine Chance, es zu verwenden. Es tut uns leid.

Ich bin überhaupt nicht an Python gewöhnt, deshalb schreibe ich das normalerweise nicht! Ich wäre Ihnen dankbar, wenn Sie mir Informationen wie> Python-Leute geben könnten

Recommended Posts

Das 10. Referenzproblem beim Schreiben in Echtzeit. Implementierungsbeispiel von Python.
Das 11. Referenzproblem beim Schreiben in Echtzeit. Implementierungsbeispiel von Python.
Das zwölfte Offline-Echtzeit-Schreibreferenzproblem. Implementiert von Python
Das 14. Referenzproblem beim Offline-Schreiben in Echtzeit mit Python
Das 18. Offline-Echtzeit-Schreibproblem in Python
Das 19. Offline-Echtzeit-Schreibproblem in Python
Das 15. Offline-Echtzeit-Schreiben eines Referenzproblems in Python
Das 14. Referenzproblem beim Schreiben in Echtzeit in Python
Das 18. Offline-Echtzeit-Schreiben eines Referenzproblems in Python
17. In Python implementiertes Referenzproblem für das Offline-Schreiben in Echtzeit
Das 19. Offline-Echtzeit-Schreiben eines Referenzproblems zur Lösung mit Python
17. Offline-Echtzeit So lösen Sie Schreibprobleme mit Python
Offline-Echtzeit zum Schreiben eines Python-Implementierungsbeispiels für das E15-Problem
Das 16. Offline-Echtzeit-Schreibproblem wurde mit Python gelöst
Das 15. Offline-Problem beim Schreiben in Echtzeit wurde mit Python gelöst
Beim 15. Offline-Echtzeitversuch habe ich versucht, das Problem des Schreibens mit Python zu lösen
13. Offline-Echtzeit So lösen Sie Schreibprobleme mit Python
Offline in Echtzeit, wie man ein Implementierungsbeispiel für E11 Ruby und Python schreibt
Antwort auf "Offline in Echtzeit, wie man ein F04-Problem schreibt"
Antwort auf "Offline in Echtzeit, wie man ein F05-Problem schreibt"
Antwort auf "Offline in Echtzeit, wie man ein E12-Problem schreibt"
Teil 1 Ich habe ein Beispiel für die Antwort auf das Referenzproblem geschrieben, wie man in Python in Echtzeit offline schreibt
20. Offline-Echtzeit So schreiben Sie Probleme in Python
Teil 1 Ich habe die Antwort auf das Referenzproblem geschrieben, wie man in Python in Echtzeit offline schreibt
Ein Beispiel für die Antwort auf die Referenzfrage der Studiensitzung. Mit Python.