From aa260893861331f36cad23724232231b08cd7af4 Mon Sep 17 00:00:00 2001 From: Jeeb Date: Sat, 12 Feb 2022 06:22:45 -0600 Subject: [PATCH] Answer lookup: Add 'no peeking' mode; don't show answers at or beyond today's Wordle. (Trivial to work around, but allows for narrow searches.) --- src/g.py | 52 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/src/g.py b/src/g.py index 84ede9c..c22a485 100644 --- a/src/g.py +++ b/src/g.py @@ -7,19 +7,32 @@ from datetime import date parser = argparse.ArgumentParser( description='A barebones CLI Wordle clone, using official Wardle solutions. Also a Wordle cheating tool. You have been warned.' ) -parser.add_argument('day', type=int, nargs="?", help="Wordle day number") -parser.add_argument('-l', metavar="solution", help="look up the day of a given solution") -parser.add_argument('-d', metavar="day", type=int, help="look up the solution of a given day") -parser.add_argument('-g', metavar="guesses", type=int, help="number of guesses") +parser.add_argument('day', nargs="?", type=int, help="Wordle day number") +parser.add_argument('-l', metavar="solution", help="look up the day of a given solution") +parser.add_argument('-d', metavar="day", type=int, help="look up the solution of a given day") +parser.add_argument('-g', metavar="guesses", type=int, help="number of guesses") +parser.add_argument('--hard', action='store_true', help="enable hard mode") # Parse the args args = parser.parse_args() # Handle the args +# Get today's day number +if args.day is not None: + # Ahoy-hoy, time traveller! + d = args.day +else: + # find num. days since Wordle launch + d = (date.today() - date(2021, 6, 19)).days + # l is for "Find this word in the answers list" if args.l: + l = args.l.lower() # Look up the answer's index - print (w.Answers.index(args.l)) + if l in w.Answers and w.Answers.index(l) < d: + print ("Wordle {}: {}".format(w.Answers.index(l), l)) + else: + print ("{} is not a Wordle (yet)".format(args.l)) exit(0) # d is for "Find this day's answer" @@ -31,8 +44,13 @@ if args.d != None: print ("No Solution") exit(0) +if args.g: + max_guesses = args.g +else: + max_guesses = 6 + # Get today's day number -if args.day: +if args.day is not None: # Ahoy-hoy, time traveller! d = args.day else: @@ -48,11 +66,16 @@ a = ["⬛", "🟨", "🟩"] # Guesses go here g = [] +# Hits/Misses go here +h = "" +m = "" + # C R A N E hints = [0, 0, 0, 0, 0] def wordbox(word): b = "" + global h, m wordlist = list(wotd) for i in range(len(word)): if word[i] == wotd[i]: @@ -62,7 +85,8 @@ def wordbox(word): wordlist[i] = 0 # add "🟩" to line b += a[2] - + # Mark the hit + h += word[i] elif word[i] in wordlist: # Mark as hinted (wrong place) hints[wordlist.index(word[i])]= 1 @@ -70,16 +94,19 @@ def wordbox(word): wordlist[wordlist.index(word[i])] = 0 # Add "🟨" to line b += a[1] + # Mark the hit + h += word[i] else: # Add "⬛" to line b += a[0] + m +=word[i] print(b) def game(): - print ("[ Wordle {} ]".format(d)) + print("[ Wordle {}{} ]".format(d, "*" if args.hard else " ")) words = w.Words + w.Answers guess = 0 - while guess < 6: + while guess < max_guesses: ui = input() if len(ui) == 5 and ui in words: g.append(ui) @@ -90,14 +117,13 @@ def game(): else: guess += 1 else: + if ui == "exit": + exit() print ("Not in word list") win(False) def win(won): - if won: - print("\nWordle {} {}/6\n".format(d, len(g))) - else: - print("\nWordle {} X/6\n".format(d)) + print("\nWordle {} {}/{}{}\n".format(d, len(g) if won else "X", max_guesses, "*" if args.hard else "")) for gi in g: wordbox(gi)