• トップページ
  • project
    • 全ての作品
    • 全てのタグ
  • blog
    • 全ての記事
    • 全てのタグ
  • tag
    • 全てのタグ
    • 全ての作品タグ
    • 全ての記事タグ
  • about
    • p進大好きサークル photo

      p進大好きサークル

      p進大好きサークルのHPです。

    • もっと読む
    • Twitter
    • pixiv
    • 巨大数Wiki

ソースコード一覧

最終更新日: 2025/05/03

トップページ 作品一覧

twitter pixiv yukicoder お題箱 マシュマロ

こちらは筆者($p$進大好きbot)の作成したソースコードへのリンク集です。これらのソースコードはページ下部のライセンスに従ってくださることを条件にどなたでもご利用可能です。

ただしご使用の際はページ下部の注意点もよくお読みになって下さい。

  • 競技プログラミングコンテスト用ライブラリ
    • 考察自動化
      • ライブラリ探索
      • サンプル解析
      • サンプル収集
      • 順位表解析
    • 作問
      • 想定解実行
      • テストケース生成
      • テストファイルフォーマット変更
      • テストファイル書き出し
    • 提出用テンプレート
      • 実験コード
      • ライブラリ添付用コード
      • ローカル環境でのみインクルードされるコード
      • ランダムテスト生成コード
      • スモールテスト生成コード
      • 実行本体コード
  • 例外処理用ライブラリ
    • ブレークポイント設定
    • デバッグ設定
    • コードミス用の例外
    • 無視されたエラー記録
    • nullポインタ等へのアクセス用の例外
    • 想定外の引数による関数呼び出し用の例外
    • 型の不一致に関するエラー用の例外
    • デバッグ時のエラー位置自動出力マクロ
    • 未知のエラー用の暫定例外
    • 警告文出力
  • 数学用ライブラリ
    • 代数
      • モノイド
        • 群
          • 加群
            • 両側加群
            • 区間加群
        • 半束
        • 非単位的半環
          • 非単位的交わり半環
          • 環
    • 解析
      • 角度
    • 算術
      • 約数
        • 約数計数
        • 約数列挙
        • 最大公約数
        • メビウス関数
        • 約数和
      • 多倍長符号なし整数ライブラリ
        • 多倍長符号なし浮動小数点数ライブラリ
      • 拡張自然数
        • 総和と総乗
      • 拡張有理数
      • 総和
      • 合同式
        • コンパイル時定数を法とするZの剰余環
          • モンゴメリ表現
          • ベクトル演算
        • 実行時定数を法とするZの剰余環
        • 関数
          • 中国剰余定理
          • オイラー関数、カーマイケル関数
          • 余り
          • 平方剰余記号
        • 剰余環
      • p進展開
      • 素数
        • 素数列挙
        • 素因数分解
        • クローブ数列
      • 二次拡大
        • 四元数
      • 平方根
      • 精度保証付き実数
    • 組み合わせ論
      • ベルヌーイ数
      • 場合の数
      • 番号付け
        • 直積
        • 直和
      • 単調増大列
        • 単調増大部分列
        • 単調増大部分歩道
      • 区間スケジューリング
      • ナップサック問題
        • 重みなし
          • 差の最小化
          • 要素数固定
          • 始切片和
        • 区間和
          • コストなし
            • 価値総和上限なし
        • 選択回数上限あり
          • 重みなし
          • 価値のみ負許容
          • 価値・コスト変動
        • 負数許容
          • コストのみ負許容
            • 数え上げ
              • 個数指定
          • 複数のナップサック
          • 価値のみ負許容
          • 遷移過程にもコスト制約つき
        • 選択順指定
        • 選択回数上限なし
          • 重みなし
          • 負価値許容
            • 価値・コスト変動
              • 選択可能性に項目間依存性あり
      • 単調増大部分列
        • 部分歩道
      • 格子点
      • 多重ループ
      • 分割数
      • 順列
      • 焼きなまし法
      • スライド最小化
      • スターリング数
        • 第2種スターリング数
      • 部分列
        • AAB部分列
        • AB部分列
        • ABA部分列
        • ABC部分列
      • ウォルシュ・アダマール変換
      • ヤング図形
      • ゼータ変換
        • 約数ゼータ変換
        • 高速ゼータ変換
        • マーラー変換
    • 関数
      • 計算可能関数(プログラミング言語\(\mathbb{Q}_p\))
      • コード化
      • 反復合成
        • ダブリング
        • ループ検出
      • 交差性を持つ関数の最大値
        • 一次関数の最大値
        • 共通部分計算に二分探索を用いた簡略版
    • ゲーム
      • ニム
        • 非輪状ニム
    • 幾何
      • アフィン空間
        • 三角形の面積
        • 距離
          • 全最近傍探索
          • L1距離
          • L2距離
          • 1次元
          • L∞距離
        • 三角形の外接円
        • 線分の交差判定
      • 円
      • グラフ
        • 非輪状グラフ
          • 有向森
          • 非輪状有向グラフのハミルトン路
          • 最長歩道
          • 強連結成分分解
            • ハミルトン歩道
          • 無向木
        • グラフアルゴリズム
          • ベルマンフォード
          • 幅優先探索
            • 01幅優先探索
            • N進法全探索
            • bit全探索
            • 商集合探索
          • 深さ優先探索
            • 経路全探索
            • 木の深さ優先探索
              • 重み付き木の深さ優先探索
          • ダイクストラ
            • グラフの非輪状グラフへの二重適用
              • 多経由点最短経路問題
              • 非輪状グリッドグラフへの二重適用
            • ポテンシャル付きダイクストラ
              • 最小費用流
          • ワーシャルフロイド
          • ホップクロフトカープ
          • 最大流
          • 素集合データ構造
            • クラスカル法
            • 並列二分探索
        • グリッドグラフ
          • 価値最大化
        • 線形グラフ
          • 前者関数
    • 線形代数
      • 階数
        • 法2
        • 複素数
        • 整数
        • 法p
        • 実数
      • 2次元ベクトル
      • 2次正方行列
    • 多項式環
      • ボスタン森
        • 並列ボスタン森
      • 座標変換(平行移動/アフィン変換/メビウス変換)
      • 総和/総乗/指数関数の一次結合/累積和
        • グリッドの一様ランダム被覆期待値
      • 高速フーリエ変換/畳み込み
        • 任意mod畳み込み
      • 形式冪級数
        • 合成(メビウス変換/指数関数/対数関数)
      • 合同式
      • 多点評価/差積/部分分数分解
        • 区間評価
        • ラグランジュ補間
      • 多変数
        • グレブナー基底
        • 求解
    • 集合
      • 直積
        • アフィン空間
          • フェニック木
            • モノイドフェニック木
            • フェニック木と通常の配列のハイブリッド型
            • 区間加算フェニック木
            • 区間最大値フェニック木
            • 時系列加算フェニック木
            • 時系列最大値更新フェニック木
          • 累積積
            • オフライン累積積
            • 二次元累積和
          • 森上の階差数列
            • 森上の階差数列の反転
            • 二次元階差数列
          • DisjointSparseTable
          • 平方分割
            • 双対平方分割
              • 可換双対平方分割
              • 等比数列min更新双対平方分割
            • 区間加算平方分割
            • 遅延評価平方分割
              • 同変遅延評価平方分割
              • 区間乗算遅延評価平方分割
            • 莫のアルゴリズム
            • モノイド平方分割
              • 区間乗算モノイド平方分割
            • ヒューリスティック最適化
          • セグメント木
            • 双対セグメント木
        • 座標圧縮
        • 座標直列
      • 直和
      • 空集合
      • 直線
        • 直線の有界部分集合
          • 直線の有界多重部分集合
            • 直線の区間挿入付き有界多重部分集合
          • 半直線の有界部分集合
            • 半直線の有界多重部分集合
              • 半直線の区間挿入付き有界多重部分集合
          • 直線の部分集合の座標圧縮
            • 直線の多重部分集合の座標圧縮
              • 直線の区間挿入付き多重部分集合の座標圧縮
      • シングルトン
      • 後続
      • trie木
    • 汎用アルゴリズム等
      • 二分探索
        • 三分探索
      • list型
      • 順序反転
      • set型
        • map型
        • ゾブリストハッシュ
      • string型
        • 回文判定
        • ローリングハッシュ
          • ローリングハッシュのグロタンディーク化
          • 文字シフト可能ローリングハッシュ
            • 文字シフト可能ローリングハッシュのグロタンディーク化
        • Z-アルゴリズム
      • 尺取り法
      • タプル型
      • vector型
        • クエリソート
  • 汎用ライブラリ
    • ファイルストリーム
    • 参照返し関数による安全な大域変数の自動生成マクロ
    • 遅延評価テンプレート
    • label付きlist
    • 疑似delete付きvector
    • スマートポインタ
    • 標準入出力
      • 高速化
    • string型
    • 直近の戻り値を格納する型のテンプレート
    • 実行時間計測
    • 可変長配列
    • 可変長木
    • ラップ型
  • SFINAEマクロ用
    • 指定した型の引数組み合わせで呼び出し可能な指定した関数名のメンバ関数の有無による条件分岐
      • 関数でなくコンストラクタである場合
      • 関数でなく演算子である場合
    • 型の特性による条件分岐
      • list型か否かによる条件分岐
      • ポインタ型か否かによる条件分岐
      • 参照型か否かによる条件分岐
    • 指定した関数名の非メンバ関数が指定型の引数の組み合わせで呼び出し可能か否かによる条件分岐
      • 引数がconst参照型である場合
      • list型を引数に持つ場合
      • 関数でなく演算子である場合
      • 戻り値の型を指定する場合
  • 音楽用ライブラリ
    • 調
      • 階名
      • 音階
    • 配置
      • 協和音
      • 七の和音
    • 音名
      • 変化記号
      • 幹音
      • ピッチ
        • 音度
          • 接頭辞
    • 和音
      • 3和音
        • 協和音
      • 4和音
        • 七の和音

注意点

  • 筆者にとってはnamespace stdがとても便利なので、至るところで使っています。namespace stdを使ってはならない宗派の方はご遠慮下さい。
  • 筆者にとってはセッタ/ゲッタの組み合わせによるカプセル化よりもメンバ変数への参照返しをする単一の関数の方が使いやすいので、しばしばセッタ/ゲッタを経由せずにメンバ変数を扱っています。完全なカプセル化をしなければならない宗派の方はご遠慮下さい。
  • 筆者にとっては人が作ったクラスをなるべく含まないコードの方がはるかにデバッグしやすいため、可変長配列やスマートポインタは自作のものを使っています。コンテナ等を自作してはならない宗派の方はご遠慮下さい。
  • 筆者にとってはメンバの命名を自由に行う方が分かりやすいので、特定の命名規則に従っていません。命名規則を固定しなければならない宗派の方はご遠慮下さい。
  • 筆者にとってはデバッグとSFINAEのようなメタプログラミングや同じ定義の繰り返しをマクロでパッケージ化することがとても便利なので、マクロを多用しています。マクロを使ってはならない宗派の方はご遠慮下さい。

また筆者は独学でありかつチームでの開発はしていないので、ソースコードは自身にとっての可読性のみが重視されているためコメントもほとんど書いておらず他の人にとっては可読性が低いことが予想されます。使い方や動作を詳しく知りたいソースコードがあったら筆者のtwitterアカウントまでお問い合わせして下されば、解説するかもしれません。また不具合を見つけましたら教えていただけますと助かります。

ライセンス

本ソースコードの複製またはその改変(以下、本ソフトウェア)を取得したすべての者に対し、以下の項目に同意するという制約下で本ソフトウェアを扱うことを無償で許可します。

  1. あなたは本ソフトウェアを扱う際に、本ページ(またはその過去の版であって本ソフトウェア取得時点と同一のライセンスが記載されているもの)へのリンクまたはそこへのリンクが明示されたページへのリンクを明記することで、本ソフトウェアを閲覧した他者が本ソフトウェアの所在とライセンスを把握できることを保証します。
  2. あなたは他者に、本ソフトウェアを本ライセンスに従わない形で扱うことを、明示的であるか暗黙的であるかを問わず許可しません。
  3. 本ソフトウェアの扱いによって生じる一切の請求、損害、その他の義務について、本ソースコード作成者は何ら責任を負いません。

項目1に関して例示すると、例えばあなたのライブラリが公開されているページに本ページへのリンクを明示して本ソフトウェアの所在とライセンスを確認できるようにした上で、あなたのライブラリが公開されているそのページへのリンクを明記することで項目1に抵触することを避けられます。一方で本ページへのリンクを暗号化したり秘匿したりなど、他者が本ソフトウェアの所在とライセンスを必ずしも把握できない形でリンクを埋め込むだけでは項目1に抵触します。

項目2に関して例示すると、例えば本ソフトウェアを埋め込んだソースコードを他者に自由に改変する許可を与えることは、結果的にそのソースコード内に埋め込まれた本ソフトウェアを項目1の制約なく自由に改変する許可を与えることになるので項目2に抵触します。一方で本ソフトウェアを埋め込んだソースコードを本ライセンスと等価なライセンスまたはより制限の強いライセンスの下で他者に提供することで項目2に抵触することを避けられます。

項目3に関して、筆者は本ソフトウェアの扱いに関する責任は一切負いませんが、一方で前述したように不具合の報告は大歓迎です。