# 模擬閱讀體驗 (type C) ## 💡 瞭解 AC 作業回饋機制 在寫這份作業之前,請你務必充分瞭解 <a href="https://github.com/ALPHACamp/web-grading-rubic" target="_blank">ALPHA Camp 作業回饋機制</a>,瞭解成果如何被審查,才能主動攻略 `Meet Expectations` 條件:(1) 充分滿足【產品/程式規格與功能】(2)【驗收重點】無重大問題 `Try Harder`:代表學生需要停下來釐清問題,修正完成後,可 tag 助教重新判定 <span style="display: inline-block;background: #03caff;color: #fff;border-radius: 5px;padding: 0 6px;margin-right: 5px;font-size: 0.8rem;vertical-align: text-bottom;">TA Review</span><span style="display: inline-block;background: #004D7F;color: #fff;border-radius: 5px;padding: 0 6px;margin-right: 5px;font-size: 0.8rem;vertical-align: text-bottom;">Editor's Choice</span><span style="display: inline-block;background: #0076BA;color: #fff;border-radius: 5px;padding: 0 6px;margin-right: 5px;font-size: 0.8rem;vertical-align: text-bottom;">Model Answer</span> ## 任務說明 在完成前面幾個練習後,終於到了把所有拼圖放在一起的時候了,我們要來寫一支可以**完整執行百貨公司「週年慶摸彩活動」任務**的程式。 ### 程式情境描述 & 預期產出 每位客戶在結帳時會得到一張摸彩券(如圖),彩券上有**一組獨一無二的彩券號碼**,填上**聯絡資訊**後,將彩券丟進摸彩箱。 <div style="width:100%"><a href="https://assets-lighthouse.alphacamp.co/uploads/image/file/14541/ExportedContentImage_00.png" target="_blank"><img style="max-width:700px;width:100%;" src="https://assets-lighthouse.alphacamp.co/uploads/image/file/14541/ExportedContentImage_00.png"></a></div> </br> 到了開獎日,系統會從摸彩箱裡選出**三名特別獎得獎者**(分別為:一獎、二獎、三獎各 1 名),**其餘參加者皆獲得參加獎**,官網上將公布經過**加密**的得獎名單(如下圖)。 ![](https://i.imgur.com/7Lo4mj0.png) ### 產品/程式規格與功能 根據情境描述跟期待產出,我們來整理一下程式的規格與功能,包含: 1. 完整執行後印出的畫面,需與[題幹圖片](https://assets-lighthouse.alphacamp.co/uploads/image/file/14542/ExportedContentImage_01.png)一致(彩券號碼亂數除外),檢查項目包括: * 字串排版格式 * 名字加密邏輯:總長度不變,顯示前兩個字母,剩下改成 `*` * email 加密邏輯:顯示 <code>@</code> 之後的資訊,<code>@</code> 之前的資訊覆蓋掉一半,隱藏的部分一律用三個點 <code>...</code> 取代。如果測試字串的長度是單數,則無條件捨去到整數位。例如長度 5,則只會留下 2 個字母;若長度是 7,則只會留下 3 個字母,依此類推。 * 頭獎、貳獎、叁獎各一,其餘為參加獎 * 彩券號碼格式需符合 1. 前兩個字符為大寫英文字母 2. 後四個字符為數字 3. 畫面上印出的彩券號碼不能有重複 2. 不能更動在原始 [Repl.it](https://replit.com/@alphacamp/lottery-final-task#index.js) 中已有的 players ### 程式執行的小提醒 * 指定方法 * 使用 let & const 宣告變數 * 使用原生 JavaScript 撰寫 * 請你 fork 這支 <a href="https://repl.it/@alphacamp/lottery-final-task" target="_blank">Repl.it</a>,程式裡已經包括: * 初始的 <code>players</code> 資料 * 公佈得獎者的格式 - 函式 <code>announceMsg (winner, prize)</code> * <code>drawWinner (players, prize)</code> 輸入與輸出 我們預期這些初始程式碼會對你有幫助,若你有必要的理由。請你繼續撰寫必要的邏輯或功能,直接做出以上輸出為止。 ### 提交前你要做的事 1. 確認提交格式:請提交一支新的 Repl.it url 2. 提交前請檢查: - 是否完成上方描述的「產品/程式規格與功能」 - 對照「 `批改標準` 」的驗收重點,知道自己有沒有完成現階段的期待 3. 在 Description 描述: - 如果 2 都全部完成,就說「都完成了」 - 如果 2 發現有缺漏,就寫下有缺哪裡、遇到問題、嘗試了什麼 注意:若提交未完成之作業,且無完成 Description 說明,助教將不會對作業進行回饋。 <a class="btn btn-secondary" href="https://app.monstercampaigns.com/c/txlfgzzpbwxsfa45m28y/" >卡關了嗎?點我看助教講解</a>