鱼C论坛

 找回密码
 立即注册
查看: 3081|回复: 2

[已解决]啦啦啦啦德玛西亚

[复制链接]
发表于 2021-4-29 10:28:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 qq1151985918 于 2021-10-17 22:00 编辑


  1. def isLengthEnough(s):
  2.     if 6 <= len(s) <= 20:
  3.         return True
  4.     else:
  5.         return False

  6. def isNumIn(s):
  7.     for i in s:
  8.         if i.isdigit():
  9.             return True
  10.     else:
  11.         return False
  12.    
  13. def isLowIn(s):
  14.     for i in s:
  15.         if i.islower():
  16.             return True
  17.     else:
  18.         return False

  19. def isCapIn(s):
  20.     for i in s:
  21.         if i.isupper():
  22.             return True
  23.     else:
  24.         return False

  25. def isNotRepeat3(s):
  26.     for i in set(s):
  27.         if i * 3 in s:
  28.             return False
  29.     else:
  30.         return True

  31. def allRepeat3(s):
  32.     r = []
  33.     while not isNotRepeat3(s):
  34.         for i in s:
  35.             for j in range(len(s), 2, -1):
  36.                 if i * j in s:
  37.                     for k in range(s.count(i * j)):
  38.                         r.append(i * j)
  39.                     s = s.replace(i * j, "")
  40.                     break
  41.     return sorted(r, key=lambda x:len(x), reverse=True)

  42. def chooseChar(s):
  43.     for x in allRepeat3(s[:]):
  44.         s = s.replace(x, x[:2])
  45.     return s
  46.    
  47. def run(s):
  48.     r = sum([isLengthEnough(s), isNumIn(s), isLowIn(s), isCapIn(s), isNotRepeat3(s)])
  49.     if r == 5:
  50.         result = 0
  51.     elif sum([isLengthEnough(s), isNotRepeat3(s)]) == 0:
  52.         cs = chooseChar(s)
  53.         if len(cs) >= 20:
  54.             return (len(s) - 20 + (3 - r))
  55.         if len(cs) + (3 - r) >= 20:
  56.             return (len(s) - 20 + (3 - r))
  57.         
  58.         allR = allRepeat3(s)
  59.         t, flg = 0, False
  60.         
  61.         res1 = max([6-len(s), len(s)-20])

  62.         n = 20 - len(cs)
  63.         for x in allR:
  64.             i = x[:-2]
  65.             if flg:
  66.                 t += len(s) - len(cs) - len(allR[0][:-2])
  67.                 break
  68.             elif not flg and len(i) > n:
  69.                 flg = True
  70.                 t += len(i) - n + (n // 3)
  71.             else:
  72.                 t += len(i) // 3
  73.         res2 = max([t, 3-r])
  74.         result = max([res1, res2])
  75.     elif not isLengthEnough(s):
  76.         t = max([6-len(s), len(s)-20])
  77.         result = max([t, 4-r])
  78.     elif not isNotRepeat3(s):
  79.         t = 0
  80.         for i in allRepeat3(s):
  81.             t += len(i) // 3
  82.         result = max([t, 4-r])
  83.     else:
  84.         result = 5 - r
  85.     return result

  86. if __name__ == "__main__":
  87.     password = input("输入密码:")
  88.     print("密码变强所需的最少步骤:", run(password))
复制代码
最佳答案
2021-4-29 21:12:07
3 5块钱。你买瓶水喝够了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-29 21:12:07 | 显示全部楼层    本楼为最佳答案   
3 5块钱。你买瓶水喝够了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-29 21:40:23 From FishC Mobile | 显示全部楼层
ba21 发表于 2021-4-29 21:12
3 5块钱。你买瓶水喝够了。

网上不管什么代码都有卖的,三五块钱一大把,python我也买过,只是JavaScript我根本不懂,看不明白,想学又总感觉时间没那么充分就一直拖着。我要是也会JavaScript我就自己弄一个小程序,还省的花钱。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-2 04:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表