import { WorkBookType, type WorkBook } from '$features/workbooks/types/workbook';

function createWorkBookBase(overrides: Partial<WorkBook> = {}): WorkBook {
  return {
    id: 100000,
    authorId: '1',
    title: '実装力を鍛える問題集',
    description: '',
    editorialUrl: '',
    isPublished: false,
    isOfficial: false,
    isReplenished: false,
    workBookType: WorkBookType.CREATED_BY_USER,
    urlSlug: '', // Only include urlSlug when it's explicitly provided
    workBookTasks: [],
    ...overrides,
  };
}

export const workbooks = [
  createWorkBookBase({
    title: '標準入出力（1 個の整数）',
    description:
      '標準入力と標準出力の練習をしましょう。この問題集では、1 個の整数値を標準入力から受け取る問題を集めています。初めてプログラミングをする人に最適の練習問題です。',
    editorialUrl: 'https://www.youtube.com/watch?v=CJLvHqP1kbs',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'standard-input-output-1-integer',
    workBookTasks: [
      { taskId: 'math_and_algorithm_a', priority: 1, comment: '' },
      { taskId: 'tessoku_book_a', priority: 2, comment: '' },
      { taskId: 'joi2022_yo1b_a', priority: 3, comment: '' },
      { taskId: 'math_and_algorithm_f', priority: 4, comment: '' },
      { taskId: 'joi2023_yo1b_a', priority: 5, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '標準入出力（2 個以上の整数）',
    description:
      '標準入力・標準出力の練習をしましょう。この問題集では、2 個以上の整数値を標準入力から受け取る問題を集めています。',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.CURRICULUM,
    workBookTasks: [
      { taskId: 'tessoku_book_bz', priority: 1, comment: '' },
      { taskId: 'abc169_a', priority: 2, comment: '' },
      { taskId: 'math_and_algorithm_b', priority: 3, comment: '' },
      { taskId: 'abc180_a', priority: 4, comment: '' },
      { taskId: 'past202306_a', priority: 5, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '10Q 総合問題（全部解く必要はない）',
    description:
      'これまでに学んできたことがらを総合的に確認できる問題です。これらの問題のうちのいくつかが解けたら、次のグレード (9Q) に進みましょう！',
    isPublished: true,
    isOfficial: true,
    isReplenished: true,
    workBookType: WorkBookType.CURRICULUM,
    workBookTasks: [
      { taskId: 'joi2022_yo1c_a', priority: 1, comment: '' },
      { taskId: 'joi2023_yo1a_a', priority: 2, comment: '' },
      { taskId: 'joi2024_yo1a_a', priority: 3, comment: '' },
      { taskId: 'joi2024_yo1c_a', priority: 4, comment: '' },
      { taskId: 'math_and_algorithm_d', priority: 5, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '演算子「+」「-」「*」の優先順位',
    description:
      '10Q の各種問題集でも演算子「+」や「*」は登場しました。今回は、これらの演算子が複雑に絡み合う数式における、演算子の優先順位をマスターしましょう！',
    editorialUrl: 'https://atcoder.jp/contests/APG4b/tasks/APG4b_d',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'operator-precedence',
    workBookTasks: [
      { taskId: 'abc172_a', priority: 1, comment: '' },
      { taskId: 'abc387_a', priority: 2, comment: '' },
      { taskId: 'abc184_a', priority: 3, comment: '' },
      { taskId: 'abc269_a', priority: 4, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '浮動小数点数',
    description: '浮動小数点数の扱い方について学びましょう。',
    editorialUrl: 'https://atcoder.jp/contests/APG4b/tasks/APG4b_e',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'floating-point-numbers',
    workBookTasks: [
      { taskId: 'abc163_a', priority: 1, comment: '' },
      { taskId: 'abc231_a', priority: 2, comment: '' },
      { taskId: 'abc211_a', priority: 3, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: 'if 文 ①',
    description: 'if 文を書く練習をしましょう。',
    editorialUrl: 'https://atcoder.jp/contests/APG4b/tasks/APG4b_g',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'if-statement-1',
    workBookTasks: [
      { taskId: 'abc174_a', priority: 1, comment: '' },
      { taskId: 'abc334_a', priority: 2, comment: '' },
      { taskId: 'abc152_a', priority: 3, comment: '' },
      { taskId: 'abc150_a', priority: 4, comment: '' },
      { taskId: 'abc199_a', priority: 5, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '文字列 ①',
    description: '‘d’ のような文字や、”dog” のような文字列の扱いを練習しましょう。',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'string-1',
    workBookTasks: [
      { taskId: 'abc325_a', priority: 1, comment: '' },
      { taskId: 'abc244_a', priority: 2, comment: '' },
      { taskId: 'abc335_a', priority: 3, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '9Q 総合問題（全部解く必要はない）',
    description:
      'これまでに学んできたことがらを総合的に確認できる問題です。これらの問題のうちのいくつかが解けたら、次のグレード (8Q) に進みましょう！',
    isPublished: true,
    isOfficial: true,
    isReplenished: true,
    workBookType: WorkBookType.CURRICULUM,
    workBookTasks: [
      { taskId: 'abc388_a', priority: 1, comment: '' },
      { taskId: 'abc183_a', priority: 2, comment: '' },
      { taskId: 'joi2025_yo1a_a', priority: 3, comment: '' },
      { taskId: 'joi2016yo_a', priority: 4, comment: '' },
      { taskId: 'past202306_b', priority: 5, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '9Q 数学',
    description:
      'AtCoder の数学的な問題に苦手意識がある方向けの問題集です。これらの問題を通して、数学の感覚を集中的に磨いていきましょう！',
    isPublished: true,
    isOfficial: true,
    isReplenished: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'math-9q',
    workBookTasks: [
      { taskId: 'abc205_a', priority: 1, comment: '' },
      { taskId: 'abc202_a', priority: 2, comment: '' },
      { taskId: 'abc193_a', priority: 3, comment: '' },
      { taskId: 'joi2025_yo1b_a', priority: 4, comment: '' },
      { taskId: 'tessoku_book_ey', priority: 5, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: 'if 文 ②（else if 文）',
    description:
      '9Q でも if 文を学びましたが、さらに発展させましょう。else if 文（C++）、elif 文（Python）を用いることで、3 通り以上の場合分けも実行できます。',
    editorialUrl: 'https://atcoder.jp/contests/APG4b/tasks/APG4b_g',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'if-statement-2',
    workBookTasks: [
      { taskId: 'joi2023_yo1b_b', priority: 1, comment: '' },
      { taskId: 'abc219_a', priority: 2, comment: '' },
      { taskId: 'abc267_a', priority: 3, comment: '' },
      { taskId: 'abc365_a', priority: 4, comment: '' },
      { taskId: 'abc362_a', priority: 5, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: 'while 文',
    description:
      'いよいよ繰り返し処理を実装できる制御構文の 1 つである while 文の登場です！　while 文は、条件を満たしている限り、処理を反復する構文です。while 文が使えるようになると、実現できる処理のバリエーションが大きく広がります。',
    editorialUrl: 'https://atcoder.jp/contests/APG4b/tasks/APG4b_k',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'while-statement',
    workBookTasks: [
      { taskId: 'APG4b_cm', priority: 1, comment: '' },
      { taskId: 'APG4bPython_co', priority: 2, comment: '' },
      { taskId: 'abc336_a', priority: 3, comment: '' },
      { taskId: 'abc281_a', priority: 4, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: 'for 文 ①（N 回処理する）',
    description:
      'for 文は、while 文を用いて実現できる繰り返し処理のうち、よくあるパターンを短く書けるものです。for 文を書けるようになることは、プログラミング入門の登竜門と言えます。しっかり練習してマスターしましょう！',
    editorialUrl: 'https://atcoder.jp/contests/APG4b/tasks/APG4b_l',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'for-statement-1',
    workBookTasks: [
      { taskId: 'APG4b_cm', priority: 1, comment: '' },
      { taskId: 'APG4bPython_co', priority: 2, comment: '' },
      { taskId: 'abc333_a', priority: 3, comment: '' },
      { taskId: 'abc282_a', priority: 4, comment: '' },
      { taskId: 'abc341_a', priority: 5, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '関数 abs(), sqrt()',
    description:
      '9Q では関数 max(), min() を学びました。ここでは、さらに関数 abs(), sqrt() を学びましょう。x の絶対値は関数 abs() を用いて abs(x) と求められます。x の平方根は関数 sqrt() を用いて sqrt(x) と求められます。',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'abs-sqrt',
    workBookTasks: [
      { taskId: 'abc239_a', priority: 1, comment: '' },
      { taskId: 'abc188_a', priority: 2, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '8Q 数学',
    description:
      'AtCoder の数学的な問題に苦手意識がある方向けの問題集です。これらの問題を通して、数学の感覚を集中的に磨いていきましょう！',
    isPublished: true,
    isOfficial: true,
    isReplenished: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'math-8q',
    workBookTasks: [
      { taskId: 'abc400_a', priority: 1, comment: '' },
      { taskId: 'abc343_a', priority: 2, comment: '' },
      { taskId: 'abc240_a', priority: 3, comment: '' },
      { taskId: 'joi2025_yo1a_b', priority: 4, comment: '' },
      { taskId: 'joig2021_a', priority: 5, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '不等式「A <= x <= B」の判定（C++ 向け）',
    isPublished: true,
    isOfficial: true,
    isReplenished: true,
    workBookType: WorkBookType.CURRICULUM,
    workBookTasks: [
      { taskId: 'past202309_a', priority: 1, comment: '' },
      { taskId: 'abc401_a', priority: 2, comment: '' },
      { taskId: 'abc352_a', priority: 3, comment: '' },
      { taskId: 'joi2021_yo1b_a', priority: 4, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '8Q 総合問題（全部解く必要はない）',
    description:
      'これまでに学んできたことがらを総合的に確認できる問題です。これらの問題のうちのいくつかが解けたら、次のグレード (7Q) に進みましょう！',
    isPublished: true,
    isOfficial: true,
    isReplenished: true,
    workBookType: WorkBookType.CURRICULUM,
    workBookTasks: [
      { taskId: 'abc406_a', priority: 1, comment: '' },
      { taskId: 'abc401_a', priority: 2, comment: '' },
      { taskId: 'abc397_a', priority: 3, comment: '' },
      { taskId: 'abc394_a', priority: 4, comment: '' },
      { taskId: 'abc392_a', priority: 5, comment: '' },
      { taskId: 'abc391_a', priority: 6, comment: '' },
      { taskId: 'abc384_a', priority: 7, comment: '' },
      { taskId: 'joi2024_yo1a_c', priority: 8, comment: '' },
      { taskId: 'past18_a', priority: 9, comment: '' },
      { taskId: 'panasonic2020_a', priority: 10, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: 'for 文 ③（最大値・最小値）',
    description:
      'for 文を用いると、N 個の値の最大値や最小値を求めることもできます。今後さまざまなアルゴリズムの基礎になる重要な処理ですので、しっかりと練習してマスターしておきましょう！',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'for-statement-3',
    workBookTasks: [
      { taskId: 'abc329_b', priority: 1, comment: '' },
      { taskId: 'abc310_a', priority: 2, comment: '' },
      { taskId: 'abc304_a', priority: 3, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '多重 for 文 ①・二次元グリッド ①',
    description:
      '「配列の配列」や「文字列の配列」を用いると、数値や文字を長方形の形状に並べたデータを扱えるようになります。このようなデータを二次元グリッドと呼ぶことにしましょう。二次元グリッドの各マスにアクセスするためには、for 文を二重にネストした “二重 for 文” を活用します。',
    editorialUrl: 'https://atcoder.jp/contests/APG4b/tasks/APG4b_t',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'nested-for-statement-1',
    workBookTasks: [
      { taskId: 'abc294_b', priority: 1, comment: '' },
      { taskId: 'abc351_b', priority: 2, comment: '' },
      { taskId: 'abc296_b', priority: 3, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '関数  ',
    description:
      'プログラムを書くとき、特定の処理を「関数」として切り出してまとめることで、綺麗なプログラムになることが多々あります。ここでは、「関数」が有効な問題をいくつか解いてみましょう！',
    editorialUrl: 'https://atcoder.jp/contests/APG4b/tasks/APG4b_p',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'function',
    workBookTasks: [
      { taskId: 'abc234_a', priority: 1, comment: '' },
      { taskId: 'abc284_b', priority: 2, comment: '' },
      { taskId: 'abc273_a', priority: 3, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '8Q までの技術の組合せ',
    description:
      '8Q では if 文や for 文など、さまざまな技術が登場しました。7Q では、これらの技術をさらに深めていきます。まずは、if 文や for 文を組み合わせて解く問題を解いて、制御構文のセンスを磨いていきましょう！　この問題集は分量こそ多いですが、新しい概念は登場しないので、一気に駆け抜けるように解いていきましょう。',
    isPublished: true,
    isOfficial: true,
    isReplenished: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'combination-of-8q-techniques',
    workBookTasks: [
      { taskId: 'abc357_b', priority: 1, comment: '' },
      { taskId: 'abc303_a', priority: 2, comment: '' },
      { taskId: 'abc301_a', priority: 3, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '7Q 総合問題（全部解く必要はない）',
    description:
      'これまでに学んできたことがらを総合的に確認できる問題です。これらの問題のうちのいくつかが解けたら、次のグレード (6Q) に進みましょう！',
    isPublished: true,
    isOfficial: true,
    isReplenished: true,
    workBookType: WorkBookType.CURRICULUM,
    workBookTasks: [
      { taskId: 'abc407_a', priority: 1, comment: '' },
      { taskId: 'abc405_a', priority: 2, comment: '' },
      { taskId: 'abc398_a', priority: 3, comment: '' },
      { taskId: 'abc387_a', priority: 4, comment: '' },
      { taskId: 'abc380_a', priority: 5, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '7Q 数え上げ問題',
    isPublished: true,
    isOfficial: true,
    isReplenished: true,
    workBookType: WorkBookType.CURRICULUM,
    workBookTasks: [
      { taskId: 'abc142_a', priority: 1, comment: '' },
      { taskId: 'abc140_a', priority: 2, comment: '' },
      { taskId: 'abc225_a', priority: 3, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '全探索 ①（全探索の基本）',
    description:
      '基本的にほとんどの問題は、計算時間を度外視すれば、考えられる場合をすべて調べ上げることによって解決できます。考えられる場合をすべて調べることを「全探索」と呼びます。全探索の練習をしていきましょう。',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'exhaustive-search-1',
    workBookTasks: [
      { taskId: 'abc342_a', priority: 1, comment: '' },
      { taskId: 'abc393_b', priority: 2, comment: '' },
      { taskId: 'abc307_b', priority: 3, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: 'バケット',
    description:
      'たとえば、あるデータの中に各整数が含まれるかどうかを効率的に管理したいとき、次のように定義された配列 T を用いることが有効です。T[x] := True (x が含まれるとき), False (x が含まれないとき)。このように、各整数 x に対して所定の値を対応させた配列をバケットと呼ぶことがあります。ここではバケットを扱う練習をしていきましょう。',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'bucket',
    workBookTasks: [
      { taskId: 'abc245_b', priority: 1, comment: '' },
      { taskId: 'abc350_b', priority: 2, comment: '' },
      { taskId: 'abc371_b', priority: 3, comment: '' },
      {
        taskId: 'joi2023_yo1a_d',
        priority: 4,
        comment: '問題集「多重 for 文 ③」でも解いた問題ですが、バケットで解くこともできます。',
      },
    ],
  }),
  createWorkBookBase({
    title: 'ビット演算 ①・二進法',
    description:
      'AND、OR、XOR などのビット演算子は、0 と 1 に対して定義されるものだと考えている方は多いかもしれません。しかしながら、より一般に、正の整数に関する演算子として定義することもできます。その際には、整数の二進法表現を活用します。',
    editorialUrl: 'https://algo-method.com/courses/5a4e0f16a033e228',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'bit-operation-1',
    workBookTasks: [
      { taskId: 'abc306_b', priority: 1, comment: '' },
      { taskId: 'tessoku_book_d', priority: 2, comment: '' },
      { taskId: 'abc336_b', priority: 3, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '6Q 重実装問題',
    description:
      '実装が重い問題を集めた問題集です。これらの問題を通して、複雑な処理の細部をしっかりと詰め切る力を養いましょう！',
    isPublished: true,
    isOfficial: true,
    isReplenished: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'heavy-implementation-6q',
    workBookTasks: [
      { taskId: 'abc328_b', priority: 1, comment: '' },
      { taskId: 'abc278_b', priority: 2, comment: '' },
      { taskId: 'abc305_b', priority: 3, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '6Q 総合問題（全部解く必要はない）',
    description:
      'これまでに学んできたことがらを総合的に確認できる問題です。これらの問題のうちのいくつかが解けたら、次のグレード (5Q) に進みましょう！',
    isPublished: true,
    isOfficial: true,
    isReplenished: true,
    workBookType: WorkBookType.CURRICULUM,
    workBookTasks: [
      { taskId: 'abc405_b', priority: 1, comment: '' },
      { taskId: 'abc390_b', priority: 2, comment: '' },
      { taskId: 'abc386_b', priority: 3, comment: '' },
      { taskId: 'abc381_b', priority: 4, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '6Q 幾何',
    isPublished: true,
    isOfficial: true,
    isReplenished: true,
    workBookType: WorkBookType.CURRICULUM,
    urlSlug: 'geometry-6q',
    workBookTasks: [
      { taskId: 'math_and_algorithm_af', priority: 1, comment: '' },
      { taskId: 'abc362_b', priority: 2, comment: '' },
      { taskId: 'abc246_a', priority: 3, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: 'スタック（stack）',
    description: 'スタックの基礎から応用まで学べる問題集です。',
    editorialUrl: 'https://qiita.com/drken/items/6a95b57d2e374a3d3292',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.SOLUTION,
    urlSlug: 'stack',
    workBookTasks: [
      { taskId: 'tessoku_book_ay', priority: 1, comment: '' },
      { taskId: 'abc396_b', priority: 2, comment: '' },
      { taskId: 'abc394_d', priority: 3, comment: '' },
      { taskId: 'abc328_d', priority: 4, comment: '' },
      { taskId: 'abc307_d', priority: 5, comment: '' },
      { taskId: 'abc333_e', priority: 6, comment: '' },
      { taskId: 'abc372_d', priority: 7, comment: '' },
      { taskId: 'abc359_e', priority: 9, comment: '' },
      { taskId: 'abc379_f', priority: 10, comment: '' },
      { taskId: 'arc076_c', priority: 11, comment: '' },
      { taskId: 'abc311_g', priority: 12, comment: '' },
      { taskId: 'abc234_g', priority: 13, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: 'ポテンシャル付き Union-Find',
    editorialUrl: 'https://qiita.com/drken/items/cce6fc5c579051e64fab',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.SOLUTION,
    urlSlug: 'potentialized-union-find',
    workBookTasks: [
      { taskId: 'abc373_d', priority: 1, comment: 'DFS・BFSでも解けます' },
      { taskId: 'abc320_d', priority: 2, comment: 'DFS・BFSでも解けます' },
      {
        taskId: 'abc328_f',
        priority: 3,
        comment: 'ポテンシャル付き Union-Find が有効活用できる問題です',
      },
      {
        taskId: 'abc280_f',
        priority: 4,
        comment: 'ポテンシャル付き Union-Find を少し工夫して活用できます',
      },
      { taskId: 'arc188_c', priority: 5, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: 'ビット全探索',
    editorialUrl: 'https://drken1215.hatenablog.com/entry/2019/12/14/171657',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.SOLUTION,
    urlSlug: 'bitmask-brute-force-search',
    workBookTasks: [
      { taskId: 'abc374_c', priority: 1, comment: '' },
      { taskId: 'abc358_c', priority: 2, comment: '' },
      { taskId: 'abc384_c', priority: 3, comment: '' },
      { taskId: 'abc321_c', priority: 4, comment: '' },
      { taskId: 'tessoku_book_bt', priority: 5, comment: '' },
      { taskId: 'past202209_g', priority: 6, comment: '' },
      { taskId: 'abc219_e', priority: 7, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '貪欲法（greedy method）',
    description:
      '貪欲法とは、最適化問題において、1 ステップ先のことのみを考えて最適化する判断を繰り返して、解を作り上げていく方法です。貪欲法の基づく解法で最適解を導ける問題を集めました。ぜひ解いてみてください！',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.SOLUTION,
    urlSlug: 'greedy-method',
    workBookTasks: [
      { taskId: 'abc397_b', priority: 1, comment: '' },
      { taskId: 'abc315_c', priority: 2, comment: '' },
      { taskId: 'abc318_c', priority: 3, comment: '' },
      { taskId: 'abc313_c', priority: 4, comment: '' },
      { taskId: 'abc301_d', priority: 5, comment: '' },
      { taskId: 'abc312_f', priority: 6, comment: '' },
      { taskId: 'abc389_e', priority: 7, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '再帰関数',
    description:
      '関数の中で自分自身を呼び出す関数を「再帰関数」と呼びます。再帰関数を使いこなすには慣れが必要です。この問題集で再帰関数の扱い方に慣れていきましょう！',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.SOLUTION,
    urlSlug: 'recursive-function',
    workBookTasks: [
      { taskId: 'abc273_a', priority: 1, comment: '' },
      { taskId: 'abc263_c', priority: 2, comment: '' },
      { taskId: 'abc367_c', priority: 3, comment: '' },
      { taskId: 'abc357_c', priority: 4, comment: '' },
      { taskId: 'abc340_c', priority: 5, comment: '' },
      { taskId: 'abc382_c', priority: 6, comment: '' },
      { taskId: 'abc321_c', priority: 7, comment: '' },
      { taskId: 'abc380_d', priority: 8, comment: '' },
      { taskId: 'abc310_d', priority: 9, comment: '' },
      { taskId: 'abc391_e', priority: 10, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '優先度付きキュー：次に大きい組を求める',
    description:
      '優先度付きキューの使い道として、「次の大きさをもつ組を求める」というものがあります。そのような問題を集中的に解いていきましょう。',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.SOLUTION,
    urlSlug: 'priority-queue',
    workBookTasks: [
      { taskId: 'abc123_d', priority: 1, comment: '' },
      { taskId: 'abc297_e', priority: 2, comment: '' },
      { taskId: 'abc391_f', priority: 3, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '連想配列（map・dict）',
    description:
      'C++ の map 型や、Python の dict 型の練習をします。連想配列は、index にさまざまな型の値を指定できるようにした配列です。バケットでは解けない問題も、連想配列を用いることで解けることがあります。',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.SOLUTION,
    urlSlug: 'map-dict',
    workBookTasks: [
      { taskId: 'abc308_b', priority: 1, comment: '' },
      { taskId: 'abc378_c', priority: 2, comment: '' },
      { taskId: 'abc398_c', priority: 3, comment: '' },
      { taskId: 'abc343_d', priority: 4, comment: '' },
      { taskId: 'abc233_d', priority: 5, comment: '' },
      { taskId: 'abc304_d', priority: 6, comment: '' },
      { taskId: 'abc146_e', priority: 7, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '順序付き集合（set・SortedSet）',
    description:
      '集合（set）に対して、順序の機能を持たせたものを扱います。「集合に含まれている値の最小値を求めよ」「集合に含まれている要素のうち x 以上である最小の値を求めよ」といった処理を高速に実行するものです。C++ では set 型が使えます。Python では tatyam さんの SortedSet 型を使いましょう。',
    isPublished: true,
    isOfficial: true,
    workBookType: WorkBookType.SOLUTION,
    urlSlug: 'ordered-set',
    workBookTasks: [
      { taskId: 'tessoku_book_bc', priority: 1, comment: '' },
      { taskId: 'tessoku_book_eb', priority: 2, comment: '' },
      { taskId: 'abc385_d', priority: 3, comment: '' },
      { taskId: 'abc380_e', priority: 4, comment: '' },
      { taskId: 'abc308_g', priority: 5, comment: '' },
      { taskId: 'abc255_h', priority: 6, comment: '' },
    ],
  }),
  createWorkBookBase({
    title: '整数系探索問題（250-like Number など）',
    description:
      '整数問題の中には、探索アプローチによって解決できるものが数多くあります。そのような問題に慣れていきましょう。',
    isPublished: false,
    isOfficial: true,
    workBookType: WorkBookType.SOLUTION,
    urlSlug: 'number-theory-search',
    workBookTasks: [
      { taskId: 'math_and_algorithm_l', priority: 1, comment: '' },
      { taskId: 'abc343_c', priority: 2, comment: '' },
      { taskId: 'abc330_c', priority: 3, comment: '' },
      { taskId: 'abc284_d', priority: 4, comment: '' },
      { taskId: 'abc400_c', priority: 5, comment: '' },
      { taskId: 'abc400_e', priority: 5, comment: '' },
    ],
  }),
];
