# 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
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up