Skip to content

期末考-1111405038-俞星合 - #1327

Open
H-HoYu wants to merge 11 commits into
DevSecOpsLab-CSIE-NPU:mainfrom
H-HoYu:0622-Data-Cleaning
Open

H-HoYu wants to merge 11 commits into
DevSecOpsLab-CSIE-NPU:mainfrom
H-HoYu:0622-Data-Cleaning

Conversation

@H-HoYu

@H-HoYu H-HoYu commented Jun 22, 2026

Copy link
Copy Markdown

Data Cleaning 題目 - RP 摘要


📋 題目摘要

題目名稱

資料清理(Data Cleaning)- 第一題

題目需求

對每一組整數數列,完成三個步驟:

  1. 去除重複 - 保留第一次出現的順序
  2. 篩選被 D 整除的數 - 只保留被 D 整除的數(本題 D=2)
  3. 由小到大排序

核心演算法

輸入: n 個整數的數列
↓
步驟1: 去除重複(保留首次出現順序)
↓
步驟2: 篩選被 D 整除的數(使用 num % D == 0 判定)
↓
步驟3: 排序(由小到大)
↓
輸出: 清理後的數列,或 NONE(無符合條件)

範例

輸入:

8
4 7 4 2 9 2 6 7
3
1 3 5
0

輸出:

2 4 6
NONE

過程:

第1組 (n=8, D=2)
原始:4 7 4 2 9 2 6 7
→ 去重:4 7 2 9 6
→ 篩選:4 2 6
→ 排序:2 4 6

第2組 (n=3, D=2)
原始:1 3 5
→ 去重:1 3 5
→ 篩選:(空,無偶數)
→ 輸出:NONE

✅ 測試結果

測試執行輸出

============================================================
開始執行綠燈測試(Green Light Tests)
============================================================
✓ Test Case 1 通過:基本情況(重複、混合數字)
✓ Test Case 2 通過:邊界情況(全奇數)
✓ Test Case 3 通過:邊界情況(單個偶數)
✓ Test Case 4 通過:邊界情況(全偶數有重複)
✓ Test Case 5 通過:邊界情況(負偶數)
✓ Test Case 6 通過:多組測資
============================================================
✓ 所有測試通過!6/6
============================================================

測試涵蓋項目

編號 測試案例 輸入 預期輸出 邊界情況
TC1 基本(重複、混合) 4 7 4 2 9 2 6 7 2 4 6 ❌ 基本
TC2 全奇數 1 3 5 NONE ✓ 無符合
TC3 單個偶數 4 4 ✓ n=1
TC4 全偶數有重複 2 4 2 6 4 2 4 6 ✓ 全符
TC5 負偶數 -4 -2 -4 3 -2 -4 -2 ✓ 負數
TC6 多組測資 多行輸入 多行輸出 ✓ EOF

結果:6/6 通過(綠燈 ✅)


🔧 我跟 AI 改了什麼地方

改動 1:修正 OCR 識別錯誤

原始問題: 題目文件中有 OCR 掃描錯誤(「保保結」等亂碼)

AI 給的方案:

  • 自動識別並修正常見 OCR 錯誤
  • 補充完整的題目敘述與範例

我的判斷與修改:

  • ✅ 驗證修正後的文本邏輯是否正確
  • ✅ 確認題目三個核心步驟(去重、篩選、排序)的完整性

改動 2:修正篩選條件(關鍵)

原始問題: 題目初版誤認篩選條件是「保留偶數」

用戶明確指令:

保留被D整除 不是 保留偶數

AI 給的修正方案:

  • 修正核心任務第2步:「篩選偶數」→「篩選被 D 整除的數」
  • 修正範例說明標題
  • 修正詳細過程中的所有描述
  • 修正關鍵要點和邊界情況

我的判斷與修改:

  • ✅ 確認修正涵蓋所有 6 個位置
  • ✅ 驗證「被 D 整除」的概念清晰一致
  • ✅ 確認公式 num % D == 0 正確應用在邊界情況說明

影響: 這個修正直接影響了題目邏輯與測試設計


改動 3:紅燈測試設計與錯誤排除

原始問題: 需要設計 6 個測試案例,並確保能正確執行

AI 給的方案:

  • 提供 6 個測試案例(超過要求的 3 個)
  • 完整的測試框架代碼
  • 使用 redirect_stdin 處理輸入

我的判斷與修改:

  • ❌ 發現 from contextlib import redirect_stdin 導入無效
  • ✅ 移除無效 import,改用直接函數呼叫
  • ✅ 驗證所有 6 個測試案例的邏輯正確
  • ✅ 確認紅燈狀態(6/6 失敗)與綠燈狀態(6/6 通過)的轉換

改動 4:解題檔實作

原始問題: 需要實作三步演算法

AI 給的方案:

def data_cleaning(numbers, divisor=2):
    # 步驟1:去除重複(保留首次順序)
    seen = set()
    unique = []
    for num in numbers:
        if num not in seen:
            unique.append(num)
            seen.add(num)
    
    # 步驟2:篩選被整除
    filtered = [num for num in unique if num % divisor == 0]
    
    # 步驟3:排序
    return sorted(filtered)

我的判斷與修改:

  • ✅ 邏輯驗證:集合 + 列表保留順序(正確)
  • ✅ 列表推導式篩選(正確)
  • sorted() 排序(正確)
  • ✅ 測試所有 6 個案例,確認綠燈(6/6 通過)

📊 改動統計

改動類型 數量 重要性
OCR 錯誤修正 多處 🟡 中
篩選條件修正 6 處 🔴 高
測試框架除錯 1 處 🔴 高
實現驗證 3 項 🟡 中

關鍵修改: 篩選條件從「偶數」修正為「被 D 整除」,影響整個題目邏輯與測試設計。


📝 最終評語

題目分析: 完整,邏輯清晰
測試設計: 6 個案例,涵蓋邊界情況
實現驗證: 所有測試通過(6/6 綠燈)
改動記錄: 關鍵修改有明確的「為什麼改」與「改了什麼」

本題目完全符合「只做我要求的」原則,每項改動都基於用戶明確指令或 AI 錯誤的修正。

@H-HoYu H-HoYu changed the title 1111405038-俞星合-期末考 期末考-1111405038-俞星合 Jun 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant