# 六角學院 Node 直播班 - 2023 春季班 破冰任務:
### 挑戰三:ChatGPT AI 程式題詠唱訓練
### 1. 請用 chatGPT 解答[10 道 if+function 題目](https://hackmd.io/zvASmoO4S3q6oLINjupvJA)
#### **第一題**:一週有七天,請製作一個函式可輸入不同的星期日數,並回傳當天的心情小語,
如下例:

**ANS:**



#### **第二題**:**飲酒測試**
最低法定飲酒年齡為 18 歲,請撰寫一個函式來測驗輸入的年齡是否能飲酒。

**ANS:**


#### **第三題**:**發燒檢測**
人的中心體溫通常會自動調節在 37 ℃ 左右,只要 ≥ 38度就代表可能發燒了!請製作一個探測人體溫度是否發燒的函式。

**ANS:**



#### **第四題**:**溫標轉換**
目前常見的溫度標示有攝氏(°C)與華氏(°F),請撰寫兩個函式可以轉換彼此四捨五入至小數第一位,如下範例。

**ANS:**



#### **第五題**:**餵食青蛙**
請幫遊戲內的青蛙角色設計被餵食飼料時的反應,輸入不同種類單位大小的飼料,讓青蛙做出相對應的回饋,如下範例:

**ANS:**



#### **第六題**:**計算球體體積**
請製作一個球體積計算函式,參數為半徑,回傳計算後四捨五入取至第一位小數的結果。
球體積 = 4 / 3 x π x 球半徑³

**ANS:**



#### **第七題**:**BMI 計算**
BMI 稱為身體質量指數(Body Mass Index,縮寫為BMI),是目前美國疾病管制局及世界衛生組織所認可,利用身高為基礎來測量體重是否符合標準。請套用以下公式製作一個 BMI 計算函式。


**ANS:**



#### **第八題**:**斜邊計算**
直角三角形的斜邊長度公式為:x² + y² = z²,請製作一個輸入兩邊邊長並回傳四捨五入取至小數第一位斜邊的函式。

**ANS:**


#### **第九題**:**FizzBuzz**
是一個簡單的小遊戲,給定一串從 1 到 100 的數字:
如果是 3 的倍數,就印出 “Fizz”
如果是 5 的倍數,就印出 “Buzz”
如果同時是 3 和 5 的倍數,就印出 “FizzBuzz”
將結果回傳為一個陣列。

**ANS:**


#### **第十題**:**蜘蛛下網**



### 2. 請用 chatGPT 詠唱以下 [Bootstrap 5 文件](https://hackmd.io/@YmcMgo-NSKOqgTGAjl_5tg/ryar-vGOd/%2FNdGKchTeRBqbkTMiQ2HSmw?fbclid=IwAR3SBn6du9SuAvTGOqscoVCtfddf-8QRPAk7POCDwtEeyL7lb3-mcPthUbI)的[募資網站](https://hexschool.github.io/boootstrap5WebLayout/)中,詠唱下圖範圍版型,並分享自己的詠唱語法與 Codepen,來看哪組的小組詠唱能力最接近。註:進入[標示文件](https://hexschool.github.io/boootstrap5WebLayout/),點擊圖片後右下角的匯出可獲得圖片線上網址。

#### 因為ChatGPT會文字截斷所以要詠唱好幾次,並且也需要自己稍微修改下 [codepen](https://codepen.io/CloThEsZ/pen/vYzgKOJ)
#### 一.募資網站-上方金額
* >
#### 二.募資網站-進度條
* >
#### 三.募資網站-募款人數
* >
#### 四.募資網站-icon
* >
#### 五.募資網站-專案募資贊助
* >
#### 六.募資網站-追蹤分享
* >
### 3. 請嘗試用 chatGPT 寫出 [todolist API](https://discord.com/channels/801807326054055996/1075786895914700820),並一樣需載入 `uuid` NPM 套件,並寫出各 API 功能

```javascript=
const http = require('http');
const { v4: uuidv4 } = require('uuid');
// 資料庫
let tasks = [];
// 建立HTTP Server
const server = http.createServer((req, res) => {
const { method, url } = req;
// 新增任務
if (method === 'POST' && url === '/tasks') {
let data = '';
req.on('data', chunk => {
data += chunk;
});
req.on('end', () => {
const task = JSON.parse(data);
const id = uuidv4();
tasks.push({ id, ...task });
res.statusCode = 201;
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify({ id }));
});
}
// 修改任務
else if (method === 'PUT' && url.match(/^\/tasks\/(\w+)$/)) {
const id = url.split('/')[2];
let data = '';
req.on('data', chunk => {
data += chunk;
});
req.on('end', () => {
const task = JSON.parse(data);
const index = tasks.findIndex(task => task.id === id);
if (index !== -1) {
tasks[index] = { id, ...task };
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(tasks[index]));
} else {
res.statusCode = 404;
res.end();
}
});
}
// 刪除任務
else if (method === 'DELETE' && url.match(/^\/tasks\/(\w+)$/)) {
const id = url.split('/')[2];
const index = tasks.findIndex(task => task.id === id);
if (index !== -1) {
tasks.splice(index, 1);
res.statusCode = 204;
res.end();
} else {
res.statusCode = 404;
res.end();
}
}
// 獲取所有任務
else if (method === 'GET' && url === '/tasks') {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(tasks));
}
// 獲取單個任務
else if (method === 'GET' && url.match(/^\/tasks\/(\w+)$/)) {
const id = url.split('/')[2];
const task = tasks.find(task => task.id === id);
if (task) {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(task));
} else {
res.statusCode = 404;
res.end();
}
}
// 其他情況回傳404 Not Found
else {
res.statusCode = 404;
res.end();
}
});
// 啟動HTTP Server
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
```