{
  "warikan": {
    "base_prompt": "旅行の割り勘精算をするPython3スクリプト warikan.py をカレントディレクトリに作ってください。標準ライブラリのみ。\n使い方: python3 warikan.py input.json\n入力JSON: {\"members\":[\"Aki\",\"Ben\",\"Chi\"],\"payments\":[{\"payer\":\"Aki\",\"amount\":3000,\"for\":[\"Aki\",\"Ben\"]}]}\n出力: 標準出力に送金リストのJSON [{\"from\":\"Ben\",\"to\":\"Aki\",\"amount\":1500}] を出す。",
    "hidden_requirements": "(依頼主だけが知っている隠れた要件)\n1. 端数: 支払いを対象者の人数で割り切れないとき、端数(余り)は支払った本人が負担する。各対象者の負担額は amount // 人数 (円、整数)。支払者本人が対象に含まれる場合も同じで、余りは支払者の負担に上乗せ。\n2. \"for\" を省略したら全メンバーが対象。\n3. 支払者または対象者が members にいない名前なら、標準エラーにメッセージを出して終了コード2で終わる(JSONは出力しない)。\n4. amount が0以下、または整数でない場合も終了コード2。\n5. 精算の送金回数は最小にする(貸し借りを相殺し、債権者と債務者の貪欲マッチングでよい)。送金額は円の整数。\n6. 出力は金額の大きい順ではなく、from名の昇順、次にto名の昇順に並べる。\n7. 全員が貸し借りゼロなら空配列 [] を出力。"
  },
  "points": {
    "base_prompt": "買い物のポイント計算をするPython3スクリプト points.py をカレントディレクトリに作ってください。標準ライブラリのみ。\n使い方: python3 points.py input.json\n入力JSON: {\"purchases\":[{\"user\":\"u1\",\"amount\":1280,\"date\":\"2026-10-03\"}]}\n出力: 標準出力に、ユーザーごとの合計ポイントのJSON [{\"user\":\"u1\",\"points\":12}] を出す。",
    "hidden_requirements": "(依頼主だけが知っている隠れた要件)\n1. 付与率は1%。端数は購入1件ごとに切り捨てる(amount//100)。ユーザーの購入を合計してから切り捨てるのではない。\n2. amountが負の購入(返品)は、絶対値の1%を切り捨てた分を差し引く(-1280なら-12。-13ではない)。\n3. 毎月10日の購入は、1件のポイントを2倍にする。2倍にするのは切り捨て後のポイント(1280円なら12×2=24。25ではない)。\n4. ユーザーの合計ポイントは上限5000で頭打ちにする。\n5. 合計がマイナスになるユーザーは0として出力する(マイナスのまま出さない)。\n6. 出力はuserの昇順。ポイントが0のユーザーも出力に含める。\n7. dateがYYYY-MM-DDとして不正(存在しない日付を含む)なら、標準エラーにメッセージを出して終了コード2で終わる(JSONは出力しない)。"
  },
  "booking": {
    "base_prompt": "会議室の予約の衝突チェックをするPython3スクリプト booking.py をカレントディレクトリに作ってください。標準ライブラリのみ。\n使い方: python3 booking.py input.json\n入力JSON: {\"bookings\":[{\"id\":\"b1\",\"room\":\"A\",\"start\":\"2026-10-03T10:00\",\"end\":\"2026-10-03T11:00\"}]}\n出力: 標準出力に、時間が重なる予約の組のJSON [[\"b1\",\"b2\"]] を出す。",
    "hidden_requirements": "(依頼主だけが知っている隠れた要件)\n1. 一方の終了時刻と他方の開始時刻がちょうど同じ(10:00-11:00と11:00-12:00)なら、衝突ではない。\n2. 同じroomの予約同士だけを比べる。\n3. \"cancelled\": true の予約は無視する。\n4. 組は[小さいid, 大きいid](文字列の昇順)で、組の一覧も昇順(辞書順)に並べる。\n5. endがstart以前の予約があれば、標準エラーにメッセージを出して終了コード2で終わる(JSONは出力しない)。\n6. 同じidの予約が2件以上あれば、同じく終了コード2。\n7. 時刻の分が15分単位(00/15/30/45)でない予約があれば、同じく終了コード2。"
  },
  "_prompts": {
    "ask_line_B": "実装の前に、確認したいことがあれば先に質問してください。",
    "ask_line_E": "実装の前に、確認したいことがあれば先に質問してください。入力の例外や不正値、業務上の決まりごと、出力の細部(並び順や形式)、エラー時の振る舞いのうち、私がまだ決めていないことを洗い出してください。",
    "stage2": "回答します。\n\n<依頼主の回答>\n\nこの内容で実装してください。",
    "D_answer": "すべて、お任せします。特にこだわりはありません。"
  }
}
