Cliquez ici pour plus de détails sur le problème. http://qiita.com/Nabetani/items/cbc3af152ee3f50a822f
Je l'ai écrit en python en référence à l'implémentation de ruby. Puisque la chaîne de caractères représentant le rang est un caractère autre que 10, remplacez d'abord 10 par un caractère «T», et retirez uniquement les caractères de rang arrangés tous les autres caractères et faites-le classer. Ensuite, utilisez la fonction set pour extraire les types de caractères de classement et créez une paire qui vérifie le nombre de rangs par nombre. Enfin, triez et quantifiez la paire et recherchez le dictionnaire prédéfini pour trouver la réponse.
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