Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
zmx0142857
GitHub Repository: zmx0142857/mini-games
Path: blob/master/py/wordle.py
363 views
1
from itertools import groupby
2
3
def letterMap(word):
4
return dict(map(lambda t: (t[0], len(list(t[1]))), groupby(word)))
5
6
def red(ch):
7
return '\033[31m' + ch + '\033[0m'
8
9
def green(ch):
10
return '\033[32m' + ch + '\033[0m'
11
12
def diff(word, guess):
13
buf = []
14
d = letterMap(word)
15
for c1, c2 in zip(word, guess):
16
if c1 == c2:
17
buf.append(green(c2))
18
else:
19
cnt = d.get(c2, 0)
20
if cnt:
21
buf.append(red(c2))
22
d[c2] = cnt-1
23
else:
24
buf.append(c2)
25
return ''.join(buf)
26
27
def play(word):
28
while True:
29
try:
30
guess = input('> ')
31
if len(guess) != len(word):
32
print('invalid word')
33
continue
34
print(diff(word, guess))
35
if word == guess:
36
break
37
except EOFError:
38
break
39
40
play('crane')
41
42