# Kotlin 期中作業 ###### tags: `Kotlin` 請使用 Kotlin 寫出一個 Wordle Helper ## Wordle 規則介紹 每天有 6 次機會可以猜單字,單字是由 5 個字母組成的 每次猜測後,會告訴你你猜測的結果,結果分為三種: 1. 黃色:字母是**對**的,有出現在答案中,但位置是**錯**的。 2. 綠色:字母是**對**的,位置也是**對**的。 3. 灰色:這個字母出現在答案中的次數至少是該字母呈綠色或黃色的次數。如果該字母在同一次猜測中**沒有出現過綠色或是黃色**的話,該字母就**不在答案裡**。 以下圖為例  我們可以得到以下的資訊: - 第一次猜測,我們可以得知: - 正確的單字的最後一個字母是 `y`(綠色) - 正確的單字裡有 `r` 這個字母,但不會出現在第一個位置(黃色) - 正確的單字裡有 `a` 這個字母,但不會出現在第三個位置(黃色) - 正確的單字裡有**不會有** `e` 這個字母(灰色) - 正確的單字裡有**不會有** `d` 這個字母(灰色) - 第二次猜測,我們可以得知: - 正確的單字裡有 `r` 這個字母,但不會出現在第一個位置(黃色) - 正確的單字裡有 `a` 這個字母,但不會出現在第五個位置(黃色) - 正確的單字裡有**不會有** `o` 這個字母(灰色) - 正確的單字裡有**不會有** `t` 這個字母(灰色) - 這個時候我們就會去猜的單字就會是符合上述資訊的,例如 `carry` ## 作業說明 你的目標是使用 Kotlin 寫出一個 Wordle Helper 你的程式會這麼運作: 1. 透過使用者輸入來得知哪些字母是屬於綠色、黃色或灰色的 2. 根據使用者輸入的資訊,算出在單字[字典檔](https://drive.google.com/file/d/1eNnKwSNCOJSEMydxWMjwafkv1xyq3LUZ/view?usp=sharing)裡還有剩下哪些單字是可能為答案的 3. 以一行一個單字的方式,輸出那些可能為答案的單字 大致上長這樣⬇  ### 字典檔 請到 [**這裡下載**](https://drive.google.com/file/d/1eNnKwSNCOJSEMydxWMjwafkv1xyq3LUZ/view?usp=sharing) 單字字典檔 ## 輸入說明 輸入分成三個區塊,依序分別描述: 1. 綠色字母的資訊 2. 黃色字母的資訊 3. 灰色字母的資訊 當一個屬性的所有字母輸入完,會輸入`END`來代表結束,也就是說,整個輸入你會看到三次`END`,每個屬性字母資訊的輸入規格: - 綠色的字母資訊 每一行描述一個綠色字母的資訊,格式為**字母**與**所在的位置**之間以空白隔開,字母大小寫不拘均視為相同,所在的位置編號自 0 開始,例如: ``` Y 4 ``` 就代表 `Y` 出現在第五個位置,也就是最後一個位置。 - 黃色的字母 每一行描述一個黃色字母的資訊,格式為**字母**與**所在的位置**之間以空白隔開,字母大小寫不拘均視為相同,所在的位置編號自 0 開始,例如: ``` R 0 ``` 就代表 `R` 出現在第一個位置。 - 灰色的字母 每一行描述一個灰色字母的資訊,例如: ``` E ``` 代表 `E` 沒有出現在答案中。灰色字母的位置資訊沒有意義,因此不輸入。但如果某一次的猜測,同時出現一個字母有多種顏色時,這個字母就不會被放在輸入的灰色字母區塊。 ### 範例輸入 以下圖為例  我們可以整理出: - 綠色的字母: - p 在第 4 個位置 - 黃色的字母: - e 不可能在第 5 個位置 - 灰色的字母: - c - a - r - y - s - l - o 因此輸入如下: ``` p 3 END e 4 END c a r y s l o END ``` 可以假定沒有不合乎說明格式的輸入,但歡迎各位同學實作有做例外外處理的版本。 ## 輸出說明 輸出那些還可能為答案的單字。每一行輸出一個單字, ### 對應範例輸入的輸出 ``` inept nempt tempi tempt dempt kempt ``` ### 額外範例  上圖所對應的輸入: ``` p 3 t 4 END e 4 e 1 END c a r y s l m o END ``` 請注意即使第三次猜有一個 `T` 是灰色的,但同一次猜測有出現綠色或黃色,因此在輸入不會被視為灰色字母。 輸出: ``` inept ``` ## 單字字典檔、測資以及輸出測試網站 + 請到 [這裡下載](https://drive.google.com/file/d/1eNnKwSNCOJSEMydxWMjwafkv1xyq3LUZ/view?usp=sharing) 單字字典檔 + 請去到這[網站 https://nycu-kotlin22fall-midterm.pages.dev/](https://nycu-kotlin22fall-midterm.pages.dev/) 裡面有提供測資跟測試你程式輸出是否正確的地方 ### 測試方式 {%youtube qJu3LjcTpDA %} 1. 打開網站 2. 根據你要測試的測資,找到對應的測資確認處,如要測試`測資 1`,你要找的就會是`測資 1 確認處` 3. 在對應的輸入框裡,貼上你寫的程式的輸出結果(請不要包含你輸入的任何東西,只需要貼上程式輸出的) 4. 按下對應的確認鈕,如要測試`測資 1`,你要按的就會是`測資 1 確認` 5. 你就會發現你測試的那筆測資的 `測資確認處` 旁的字會有變化,會變成 `正確` 或 `錯誤` #### 測試前後對比(測資 1 為例) 測試前⬇  測試後(答案正確)⬇  測試後(答案錯誤)⬇  ## 提交 - 拍攝 YouTube 解說你的程式碼,請確定畫質可以看清楚,以及有清楚錄製你的聲音 - 過程中必須包含到[這個網站](https://nycu-kotlin22fall-midterm.pages.dev/)確認你程式輸出是否正確的過程畫面 - 將主程式打包好提交到e3 ### 錄影方式 :::info Windows可以使用 Bandicam 來錄影,也可以使用支援 Windows、MAC 的 OBS 但比較複雜一些 ::: :::danger 無論如何千萬不要使用手機對螢幕錄影,拜託! ::: :::danger 無論如何千萬不要使用手機對螢幕錄影,拜託! ::: :::danger 無論如何千萬不要使用手機對螢幕錄影,拜託! ::: ### 打包方法 :::info 請將整個專案壓縮成一個 zip 檔案 ::: 
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.