#26 利用 UITextChecker 玩 WORDLE (3)

解決之前發現搜尋組合很花時間的問題

解決方法就是,我先把 A~Z 開頭的字都先搜集起來,要用的時候從裡面搜集就不用把所有的組合都搜尋一遍了

使用的方法跟 Wordle 的操作方式很像,比較不一樣的事,可以點擊輸入過的字母更換顏色,顏色代表的狀態跟 Wordle 也一樣,分成

  1. 綠色:字母正確,位置也正確
  2. 黃色:字母正確,但位置錯誤
  3. 灰色:字母錯誤
操作畫面

把搜集好的字串在一開始就全部放到 CoreData ,要搜尋的時候就去跟 CoreData 搜尋

CoreData

CoreData alphabet0~4 分別紀錄一個字的第1~5的字母

搜尋方法可以參考底下的網頁,這樣尋找的時間就大大地縮短了!

主要用到的有

  1. “alphabetX == %@” 用來過濾字母正確且位置正確的條件(X代表第幾個字母)
  2. “NOT (alphabetX IN %@)” 用來過濾字母正確但位置錯誤,和字母錯誤的條件

最後 CoreData 拿到的結果拿來和字母正確但位置錯誤的集合做 isSubset 的過濾,這樣只要條件足夠,就可以找到很接近的答案了。

因為有多個條件加再一起,所以我是把所有 NSPredicate 都放到一個 Array,再放到 NSCompoundPredicate

let predicate = NSCompoundPredicate(type: .and, subpredicates: correctCond)
實際操作

--

--