もじょえんじにあ……共感できる?

日常のメモ。日々これ共感。へたれでしょほてきなIT?

超絶テキトーなSolver....

まぁ

動くか動かないかで言えば動くと思いマスが……ウルトラいいかげんです。6回はやっぱり85%くらいデスね。最大9回で解けてマス。

#!/bin/env python3
from random import seed, choice
import sys
from string import ascii_lowercase

def main():
  with open("./dict.txt") as f:
    wdic = [x.strip() for x in f.readlines()]
  freq = dict(zip(ascii_lowercase,[0,]*26))
  for w in wdic:
    for c in w: freq[c] += 1
  sdic = dict()
  for w in wdic:
    l = len(set(w))
    sc = sum([freq[x] for x in w])
    sdic[w] = l * sc
  seed()
  ans =choice(wdic)
  adic = sorted(sdic.items(), key=lambda i:i[1], reverse=True)
  print('ANS:', ans)
  for i in range(99):
    print(i, len(adic),adic[:10])
    a = adic[0][0]
    if i == 0: a = 'trace'
    k = ''
    for b,c in zip(ans, a):
      m = '_'
      if b == c: m = 'G'
      elif c in ans: m = 'Y'
      k +=m
    print('\n'.join([k, a]))
    if k == 'GGGGG':
      print(i+1, "times. You win!")
      break
    for j in range(len(k)):
      if k[j] == '_': adic = [x for x in adic if a[j] != x[0][j]]
      elif k[j] == 'G': adic = [x for x in adic if a[j] == x[0][j]]
      elif k[j] == 'Y':
         adic = [x for x in adic if a[j] in x[0]]
         adic = [x for x in adic if a[j] != x[0][j]]

if __name__ == "__main__": main()