go-printf - 評価

課題の目的

  • 可変長引数の理解
- ...interface{} の扱い方 - 型アサーションとリフレクション

  • フォーマット文字列の解析
- 状態機械によるパース - フラグ、幅、精度の組み合わせ処理

  • 数値のテキスト変換
- 進数変換アルゴリズム - 浮動小数点の表現

評価スケール

項目 配点 説明
基本フォーマット指定子 30点 %c, %s, %d, %%, %p
数値フォーマット 25点 %x, %X, %o, %b, %u
フラグ処理 20点 -, 0, +, 空白, #
幅と精度 15点 固定値、* による動的指定
コード品質 10点 可読性、テスト
**合計** **100点**
ボーナス +30点 浮動小数点、カラー

評価ポイント

基本フォーマット指定子 (各6点)

  • [ ] %c: rune/int を正しく文字として出力
  • [ ] %s: 文字列を正しく出力
  • [ ] %d, %i: 符号付き整数を正しく出力
  • [ ] %%: パーセント記号を正しく出力
  • [ ] %p: ポインタを16進数で正しく出力
  • 数値フォーマット (各5点)

  • [ ] %x: 小文字16進数
  • [ ] %X: 大文字16進数
  • [ ] %o: 8進数
  • [ ] %b: 2進数
  • [ ] %u: 符号なし整数
  • フラグ処理 (各4点)

  • [ ] -: 左寄せが正しく動作
  • [ ] 0: ゼロ埋めが正しく動作
  • [ ] +: 正の数に+が付く
  • [ ] : 正の数の前にスペース
  • [ ] #: 代替形式(0x, 0o)
  • 幅と精度 (各5点)

  • [ ] 固定幅の指定
  • [ ] * による動的幅指定
  • [ ] 精度の指定(整数・文字列)
  • よくある減点事項

  • 型アサーションの失敗 (-5点)
- パニックを起こす型変換

  • 負数の処理誤り (-3点)
- -0 の表示問題 - 負数の16進数表示

  • フラグの組み合わせ (-3点)
- %-010d のような矛盾するフラグ

  • 精度と幅の混同 (-2点)
- 文字列の精度は最大長 - 整数の精度は最小桁数

合格基準

  • 最低点: 70点以上
  • 必須条件: 基本フォーマット指定子がすべて動作