#25 利用 UITextChecker 玩 WORDLE (2)

張又壬
Feb 25, 2022

--

利用自己寫的程式玩 WORDLE 之後發現了幾個問題

  1. 上次的版本忘記把“位置不對但字母正確”的字在最後把沒包含這些字的排除掉
  2. 雖然用了 UITextChecker 的 rangeOfMisspelledWord 檢查拼字是否正確,但似乎還是常常會得到一堆怪怪的組合,拿去查字典是查不到的
  3. 在線索不夠多的時候,搜尋的範圍太大,需要等很久!

這次解決了第一個問題,其他兩個還在想要怎麼解決

利用 Set 排除沒有包含的字串

1.從參數拿到的 wrongLocationChars 字元陣列都放到 Set 裡面

if let wrongLocationChars = wrongLocationChars {
wrongLocationSet = CharSet()
for (_, chars) in wrongLocationChars {
wrongLocationSet = wrongLocationSet.union(CharSet(chars))
}
}

這邊用到了 union 把所有蒐集到的位置錯誤的字元陣列都聯集起來

2.遞迴終結條件前,檢查拼字後,拿一開始搜集的 Set 判斷是不是該字串的 Subset

這邊用到了 isSubset 檢查這些字元是否都在剛剛檢查完拼字的字串裡面

if checkTextValid(text: text) && wrongLocationSet.isSubset(of: text) {
allText.append(String(text))
}

完成這小小的改動又可以少很多組的組合了^^

--

--