Klicken Sie hier, um Details zum Problem anzuzeigen. http://qiita.com/Nabetani/items/cbc3af152ee3f50a822f
Ich habe es in Python geschrieben, in Bezug auf die Implementierung von Ruby. Da die Zeichenfolge, die den Rang darstellt, ein anderes Zeichen als 10 ist, ersetzen Sie zuerst 10 durch ein Zeichen 'T' und nehmen Sie nur die Rangzeichen heraus, die für jedes andere Zeichen angeordnet sind, und machen Sie es zum Rang. Verwenden Sie als Nächstes die Set-Funktion, um die Typen der Rangzeichen zu extrahieren und ein Paar zu erstellen, das überprüft, wie viele Ränge es nach Anzahl gibt. Schließlich sortieren und quantifizieren Sie das Paar und suchen Sie im vorgefertigten Wörterbuch nach der Antwort.
def solve(text):
rank = text.replace('10','T')[1::2]
pair = [rank.count(x) for x in set(rank)]
key = reduce(lambda a,b: a*10+b, sorted(pair))
return {14:'4K', 23:'FH', 113:'3K', 122:'2P', 1112:'1P', 11111:'--'}[key]
def test(text, answer):
result = solve(text)
print 'OK' if result == answer else 'NG', result, answer, text
if __name__ == '__main__':
test('D3C3C10D10S3', 'FH')
test('S8D10HJS10CJ', '2P')
test('DASAD10CAHA', '4K')
test('S10HJDJCJSJ', '4K')
test('S10HAD10DAC10', 'FH')
test('HJDJC3SJS3', 'FH')
test('S3S4H3D3DA', '3K')
test('S2HADKCKSK', '3K')
test('SASJDACJS10', '2P')
test('S2S10H10HKD2', '2P')
test('CKH10D10H3HJ', '1P')
test('C3D3S10SKS2', '1P')
test('S3SJDAC10SQ', '--')
test('C3C9SAS10D2', '--')
Recommended Posts