Skip to content

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

Open
H-HoYu wants to merge 9 commits into
DevSecOpsLab-CSIE-NPU:mainfrom
H-HoYu:0622/Q3
Open

H-HoYu wants to merge 9 commits into
DevSecOpsLab-CSIE-NPU:mainfrom
H-HoYu:0622/Q3

Conversation

@H-HoYu

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

Copy link
Copy Markdown

Base-13 Digital Root 題目 - RP 摘要


📋 題目摘要

題目名稱

任意進位的數字根(Digital Root in Base-13)- 第三題

題目需求

對每個十進位數字,在 Base-13 進位下計算數字根:

  1. 進位轉換 - 將十進位數字轉換成 Base-13 進位
  2. 計算數字根 - 迭代求和各位數字直到變成一位數
  3. 輸出結果 - 以十進位格式輸出最終的數字根

核心演算法

輸入: n 個十進位整數
↓
對每個整數:
  步驟1: 進位轉換為 Base-13
  步驟2: 求和各位數字
  步驟3: 若結果 >= 13,重複步驟2
  步驟4: 輸出最終結果(< 13)
↓
輸出: Base-13 進位下的數字根(十進位表示)

範例

輸入:

0
8
63

輸出:

0
8
3

過程說明:

0:直接輸出 0

8:8 < 13,已是一位數,輸出 8

63:

63 ÷ 13 = 4 餘 11
4 ÷ 13 = 0 餘 4
Base-13 表示:[4, 11]
位數和:4 + 11 = 15
15 >= 13,繼續迭代
15 ÷ 13 = 1 餘 2
1 ÷ 13 = 0 餘 1
Base-13 表示:[1, 2]
位數和:1 + 2 = 3
3 < 13,終止
輸出:3

✅ 測試結果

測試執行輸出

======================================================================
開始執行紅燈測試(Red Light Tests)- Base-13 數字根
======================================================================
✓ Test Case 1 通過:基本情況:0 的數字根
  輸入: 0
  預期: 0
  結果: 0

✓ Test Case 2 通過:邊界情況:單位數字 (< 13)
  輸入: 12
  預期: 12
  結果: 12

✓ Test Case 3 通過:邊界情況:13 的倍數(13¹)
  輸入: 13
  預期: 1
  結果: 1

✓ Test Case 4 通過:邊界情況:Base-13 完全平方(13²)
  輸入: 169
  預期: 1
  結果: 1

✓ Test Case 5 通過:邊界情況:簡單兩位數加一
  輸入: 170
  預期: 2
  結果: 2

✓ Test Case 6 通過:邊界情況:複雜迭代求和
  輸入: 311
  預期: 11
  結果: 11

======================================================================
✓ 綠燈測試:6/6 通過
======================================================================

測試涵蓋項目

編號 測試案例 輸入 預期輸出 邊界情況
TC1 基本情況 0 0 ❌ 零值
TC2 邊界(一位數) 12 12 ✓ < 13
TC3 邊界(13 的倍數) 13 1 ✓ 13¹
TC4 邊界(完全平方) 169 1 ✓ 13²
TC5 邊界(簡單兩位) 170 2 ✓ 相鄰值
TC6 邊界(複雜迭代) 311 11 ✓ 多次迭代

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


🔧 我跟 AI 改了什麼地方

改動 1:題目整理與驗證

原始問題: 需要從照片題目整理完整的題目分析檔,Base=13

AI 給的方案:

  • 完整的題目敘述(題目概述、核心任務、輸入輸出說明)
  • Sample Input 和 Sample Output(基於 Base=13)
  • 詳細的進位轉換與數字根計算過程演示
  • 3 種推薦的演算法策略
  • 7 個邊界情況(Edge Cases)
  • Base-13 進位速查表

我的判斷與修改:

  • ✅ 驗證 Base-13 進位轉換的正確性(除法與餘數邏輯)
  • ✅ 確認一位數判定條件是 < 13(不是 < 26)
  • ✅ 確認迭代求和的終止條件明確
  • ✅ 確保題目敘述與多組測資處理邏輯清晰

改動 2:紅燈測試設計

原始問題: 需要設計至少 3 個測試案例

AI 給的方案:

  • 6 個測試案例(超過要求的 3 個)
  • 完整的測試框架和詳細注釋
  • 各測試案例的計算步驟說明

我的判斷與修改:

  • ✅ 設計了覆蓋完整邊界情況的測試案例
  • ✅ Test 1:零值(特殊情況)
  • ✅ Test 2:單位數字 < 13(一次性輸出)
  • ✅ Test 3:13 的倍數(13¹,簡單位移)
  • ✅ Test 4:Base-13 完全平方(13²,驗證位移邏輯)
  • ✅ Test 5:相鄰值(170 vs 169,驗證計算差異)
  • ✅ Test 6:複雜迭代(311,需多次位數和計算)
  • ✅ 確認所有測試框架正確,顯示綠燈狀態(6/6 通過)

改動 3:解題檔實作與演算法驗證

原始問題: 需要實作 solution.py,使所有 6 個測試案例通過

AI 給的方案:

  • 完整的 digital_root_base13(n) 函數實作
  • 使用迴圈實現進位轉換與位數求和
  • n < 13 作為一位數終止條件
  • 核心邏輯:反覆計算 digit_sum += n % 13; n //= 13

我的判斷與修改:

  • 演算法邏輯驗證

    • 進位拆解用 n % 13n // 13 正確(提取各位數字)
    • 一位數判定用 n < 13 正確(不是 n <= 12)
    • 外層迴圈條件 while n >= 13 正確(確保至少一次計算)
  • 邊界情況驗證

    • 0 直接回傳 0(特殊情況)
    • 1-12 直接返回(已是一位數)
    • 13 → 1+0 = 1(測試 13¹)
    • 169 → 1+0+0 = 1(測試 13²)
    • 170 → 1+0+1 = 2(驗證相鄰值)
    • 311 → 1+10+12 = 23 → 1+10 = 11(驗證多次迭代)
  • ✅ 所有 6 個測試通過(綠燈 ✅)

影響: 進位轉換邏輯正確與否直接決定了位數和計算,需要逐個驗證 Base-13 的拆解。


改動 4:迭代求和邏輯驗證

原始問題: 確保迭代求和的邏輯正確

AI 給的方案:

  • 內層迴圈計算一次位數和:while n > 0: digit_sum += n % 13; n //= 13
  • 外層迴圈重複計算直到 n < 13
  • 每次迭代更新 n = digit_sum

我的判斷與修改:

  • 311 的詳細驗證
    第1輪:311 >= 13
      內迴圈:311 % 13 = 12, 311 // 13 = 23
              23 % 13 = 10, 23 // 13 = 1
              1 % 13 = 1, 1 // 13 = 0
      digit_sum = 12 + 10 + 1 = 23
      n = 23
    
    第2輪:23 >= 13
      內迴圈:23 % 13 = 10, 23 // 13 = 1
              1 % 13 = 1, 1 // 13 = 0
      digit_sum = 10 + 1 = 11
      n = 11
    
    第3輪:11 < 13,終止
    輸出:11 ✓
    
  • ✅ 邏輯驗證無誤,所有測試通過

📊 改動統計

改動類型 數量 重要性
題目整理驗證 4 項 🟡 中
測試設計 6 個案例 🟡 中
演算法驗證 4 項 🔴 高
迭代邏輯驗證 6 個測試 🔴 高

關鍵修改: Base-13 進位轉換與迭代求和的邏輯驗證,涉及 % 13// 13 運算的正確性,以及 n < 13 的終止條件判定。


📝 最終評語

題目分析: 完整,Base-13 進位邏輯清晰
測試設計: 6 個案例,涵蓋所有邊界情況(零值、一位數、進位邊界、複雜迭代)
實現驗證: 所有測試通過(6/6 綠燈),進位轉換與迭代求和經過詳細驗證
改動記錄: 關鍵修改(進位轉換、迭代邏輯)有明確的演算法驗證過程

本題目完全符合「只做我要求的」原則,特別是對 Base-13 進位轉換與迭代求和的深度驗證確保了實現的正確性。

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