zoukankan      html  css  js  c++  java
  • SRM146 DIV1 600

    枚举所有情况,依次判断情况是否合法,合法则计数器加一。这里的关键是给定secret和guess如何生成result

     1 import re
     2 
     3 def processResult(result):
     4     r = re.search('(d)b (d)w', result)
     5     b = int(r.group(1))    
     6     w = int(r.group(2))
     7     return (b, w)
     8 
     9 def isvalid(x, guesses, results):
    10     lie = 0
    11     for i in range(0, len(guesses)):
    12         g = guesses[i]
    13         r = results[i]
    14         w = 0
    15         b = 0
    16         gflags = [False, False, False, False]
    17         xflags = [False, False, False, False]
    18         for j in range(0, 4):
    19             if x[j] == g[j]:
    20                 b = b + 1
    21                 xflags[j] = gflags[j] = True
    22 
    23         for j in range(0, 4):
    24             if not gflags[j]:
    25                 for k in range(0, 4):
    26                     if not xflags[k] and g[j] == x[k]:
    27                         xflags[k] = True
    28                         w = w + 1
    29                         break
    30 
    31         if not (b == r[0] and w == r[1]):
    32             lie = lie + 1
    33             if lie > 1:
    34                 return False
    35 
    36     if lie == 1:
    37         return True
    38     else:
    39         return False
    40     
    41 class Masterbrain:
    42     def possibleSecrets(self, guesses, results):
    43         results = [processResult(x) for x in results]
    44         tot = 0
    45         for x0 in range(1, 8):
    46             for x1 in range(1, 8):
    47                 for x2 in range(1, 8):
    48                     for x3 in range(1, 8):
    49                         x = str(x0 * 1000 + x1 * 100 + x2 * 10 + x3)
    50                         if isvalid(x, guesses, results):
    51                             tot = tot + 1
    52 
    53         return tot
    View Code
  • 相关阅读:
    C#如何取硬件标志
    在C#中利用Excel做高级报表
    C#实现网段扫描
    用C#编写一个抓网页的应用程序
    C# 中操作API
    C#串口操作
    C#里的InputBox
    使用C#进行Word 2002和Excel 2002编程
    用C#快速往Excel写数据
    postgres 查看数据库大小
  • 原文地址:https://www.cnblogs.com/valaxy/p/3400598.html
Copyright © 2011-2022 走看看