#33544: 這題類似 a291 的解法。


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [114.42.146.197]
最後登入時間 :
2024-05-03 16:06:58
j540. Wordle | From: [61.223.5.187] | 發表日期 : 2023-01-12 13:29

加油~~

 
#33630: Re: 這題類似 a291 的解法。


mathfan2 (mathfan)

學校 : 不指定學校
編號 : 176894
來源 : [1.170.163.150]
最後登入時間 :
2024-05-05 16:30:10
j540. Wordle | From: [61.224.199.142] | 發表日期 : 2023-01-15 08:06

加油~~


這題想好幾天了...

模仿大大您  a291的解法....可是一直想不透為什麼會TLE

 

def main():
    from sys import stdin

    s = stdin.readline().strip()
    cs = {it:0 for it in s}
    for it in s:
        cs[it] += 1

    p = int(stdin.readline())
    for _ in range(p):
        if _ > 0: print()
       
        # 先把某玩家猜的字收集起來
        t = stdin.readline().rstrip()
        g = []
        while t != "#":
            g.append(t)
            t = stdin.readline().rstrip()
        num = 0

        for guess in g:
            if len(guess) > 5: print("Too long");continue
            if len(guess) < 5: print("Not enough letters");continue
            num += 1

            # 猜對就不用再處理了
            if guess == s:
                print("OOOOO")
                print(f'Congradulat1ons ! You guessed {num} times')
                break

            ans = [None for _ in range(5)]
            ct = cs.copy()
            not_ok = []
            for i in range(5):
                if guess[i] == s[i]:ans[i] = "O";ct[guess[i]] -= 1;continue

                # 把還需要處理的 index 撿起來
                if guess[i] in cs:not_ok.append(i)
                else:ans[i] = "X"

            for i in not_ok:
                if ct[guess[i]]: ans[i] = "Y";ct[guess[i]] -= 1
                else:ans[i] = "X"
            print('{}{}{}{}{}'.format(ans[0],ans[1],ans[2],ans[3],ans[4]))

main()
 
#33632: Re: 這題類似 a291 的解法。


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [114.42.146.197]
最後登入時間 :
2024-05-03 16:06:58
j540. Wordle | From: [61.223.12.58] | 發表日期 : 2023-01-15 09:50

我把 ac 的程式碼重新上傳一遍,結果都超時,感覺這伺服器很不穩定。

 
#33634: Re: 這題類似 a291 的解法。


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [114.42.146.197]
最後登入時間 :
2024-05-03 16:06:58
j540. Wordle | From: [61.223.12.58] | 發表日期 : 2023-01-15 10:59

感覺您的這行

if guess[i] in cs:not_ok.append(i)

是不是改成這樣比較好。

if ct[guess[i]]: not_ok.append(i)

因為副本 ct 裡的值如果已被消耗掉, guess[i] 就不必進入第二回合了。
 
#33636: Re: 這題類似 a291 的解法。


mathfan2 (mathfan)

學校 : 不指定學校
編號 : 176894
來源 : [1.170.163.150]
最後登入時間 :
2024-05-05 16:30:10
j540. Wordle | From: [1.170.170.188] | 發表日期 : 2023-01-15 17:23

感覺您的這行

if guess[i] in cs:not_ok.append(i)

是不是改成這樣比較好。

if ct[guess[i]]: not_ok.append(i)

因為副本 ct 裡的值如果已被消耗掉, guess[i] 就不必進入第二回合了。

對耶~~這樣還可以省掉一行程式碼!!!

感謝D大~~

我寫了幾個版本,想法都一樣,但語法上一點點的差別,結果卻很不一樣~~

程式解題實在太有趣了!!!

 

 



 
ZeroJudge Forum