Menu
Coddy logo textTech

集計レポート

CoddyのSwiftジャーニー「ロジックとフロー」セクションの一部 — レッスン 53/56。

最後の機能:1つのカテゴリではなく、クイズ全体を実行し、最後にカテゴリごとの要約を生成します。

これまでのすべての章の内容を一度に活用することになります。反復処理のためのタプルの非構造化、文字列の章の寛容な採点、辞書の章のデフォルトの添え字を持つ辞書、そして決定論的な出力のためのソートされた反復処理です。

カテゴリごとのカウンターを、2つの並行する辞書として構築します:

var totals: [String: Int] = [:]
var rights: [String: Int] = [:]

すべての質問に対して totals[cat, default: 0] += 1 を増加させ、正解の場合のみ rights[cat, default: 0] を増加させます。最後に、レポートを出力するためにカテゴリをアルファベット順に走査します。

challenge icon

チャレンジ

中級

前のレッスンと同じ6つの問題バンクを使用します。標準入力(stdin)から**6つ**の回答を、バンクと同じ順序で1行に1つずつ読み取ります。寛大な採点(lenient grading)を使用してください。

次の順序で出力してください:

  1. カテゴリごとに1行、アルファベット順にソートし、<category>: <right>/<total> の形式で出力します。
  2. 最後に1行:全体の実行結果を Total: <right>/<total> の形式で出力します。

入力が 4 / 3.14 / Paris / Atlantic / green / WATER の場合、出力は次のようになります:

geo: 1/2
math: 2/2
science: 2/2
Total: 5/6

自分で試してみよう

let questions: [(String, String, String)] = [
    ("math", "2 + 2?", "4"),
    ("math", "Value of pi to 2 decimals?", "3.14"),
    ("geo", "Capital of France?", "Paris"),
    ("geo", "Largest ocean?", "Pacific"),
    ("science", "Color of grass?", "green"),
    ("science", "H2O is?", "water")
]

// TODO: 6つの回答を読み込む。寛容な採点を行う。カテゴリごとの合計と正解数を集計する。
// ソートされた要約行と合計を表示する。
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン