---
# System prepended metadata

title: 模擬閱讀體驗 (type C)

---

# 模擬閱讀體驗 (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>

