feature image

2025年3月17日 | ブログ記事

作問をしよう

この記事は、新歓ブログリレー2025の11日目の記事です。明日の記事は@NABEです。楽しみ~

はじめに

お久しぶりです。Naru820でございます。あいも変わらず、やらなければいけないことがたくさんあるのにも関わらず、のんべんだらりと自分のやりたいことをして過ごしております。普通に体調も悪いです。やべ~。まあそれはさておき、そんな私にはやらなければならないことも放置してやりたいような趣味がいっぱいある(いいことなのか悪いことなのか...)のですが、そのうちの一つに作問があります。ということで、今回はそんな作問の魅力を皆さんにお伝えしていきたいと思います。

宣伝

そんな作問をするのが好きな私も問題を出している、CPCTFという、新入生向けの競技プログラミングとCTFのコンテストが2025年4月に開催されます!私は主にPPC(競技プログラミング)分野で問題を作りましたので、皆様是非参加して私の問題をボコボコにしちゃいましょう!皆様の参加をお待ちしています!

作問のやり方

私の場合ですが、昔は数学の問題を、今は競技プログラミングの問題を主に作っています。最近どっちも飽き気味。

作問のアプローチは、大きく分けると2パターンあると思います。

見た目から作る

私はどっちかというとこっちの作り方をすることが多いです。作り方は簡単で、何かぼんやりと問題にしたいテーマを思い浮かべて、いっぱい頭をひねると、試験などに出てきそうな問題文っぽい問題文がおぼろげに浮かび上がってくるので、後はできた問題を自分で解くというちょっと脳筋な方法です。あとは、単純に勉強していた時に、これってどうなるんだろう?という疑問を自分で解決したときにそれを問題のタネとして出すということもまあまああります。

この手法のメリットは、自分の今のレベル以上の問題ができたり、面白い問題ができやすいことです。デメリットとしては、自明問題か不可能問題が無限に生成されて、めちゃくちゃに時間がかかることです。デメリットがデカすぎます!

この方法で、実際に私が問題を作った過程を紹介します。今回は、数学の問題を作る過程を紹介したいと思います。理由は高校生時代に作った問題を引っ張ってきて楽ができるからです。

まず、なんの分野の問題にするかを決めます。今回は、通過領域の問題にすることにしましょう。なんの通過領域にしようか考えます。直線だと面白くないので、曲線にしたいですが、まああんまり変な曲線でもあれですし、今回は2次関数にすることにしましょう。あとは、どういう条件を満たしながら動くのかを考えます。通過領域の問題は実質ここで決まりますから、一杯頭をひねって問題っぽい問題になるように考えます。他の分野の作問でも言えることですが、この過程で、自明問題か不可能問題が無限に生成されるわけですね。あと、自明でも不可能でもないけど、どこかで見たことのある、つまらない問題もいっぱいできます。苦しい。

そうして頭をひねってひねって、面白そうな設定ができて、自分でその問題を解けたら、問題文としての体裁を整えれば完成です。以下のような問題になりました。いうほどおもしろいかは微妙。

実数が以下の条件を満たしながら変化するとき、平面上の曲線の通過しうる領域を、平面上に図示せよ。

任意のに対して、が成り立つ。

暇な方は是非考えてみてください。略解は、この章の終わりに記載しておきます。

解法から作る

こっちの作り方は、先ほどよりかはもう少し確実に問題ができる作り方です。その名の通り、使わせたい解法を決めて、その解法における典型手法などを思い浮かべて、それを良い感じに改造するというものです。

こちらの手法は、問題ができ上がるのが早い、問題の難易度が先ほどの手法に比べて比較的想定しやすいというメリットがありますが、自分の今のレベルの一つ下ぐらいまでの問題までしかでき上がらないのと、単純に面白い問題ができづらいというデメリットがあります。

この方法で実際に問題を作る過程も紹介します。今度は競技プログラミングの問題を作ることにしましょう。

何の解法を使わせたいか考えます。まあ、とりあえずなんでも応用が利く二分探索を軸に考えることにします。DPも使わせたいですね。ということで、答えで決め打つ二分探索の判定問題をDPで解くような問題にしましょう。

判定問題をどうするか、もう少し細かく考えましょう。まず、どの位の難易度の問題にするかを決めないといけないですが、今回は簡単めな問題にすることにしましょう。考えるのが面倒だったので。ということで、かなり単純なDP、それこそナップザックDPぐらいでもいいかもしれません。区間minを取得させるぐらいはしてもいいかもしれません。NimとかにしてゲームDPにしてもいいかもしれません...

こんな感じで考えていって、最終的にできた問題がこちらになります。

White Tiger vs Monster

ホワイトタイガーは体のモンスターと戦っています。番目のモンスターの体力はです。また、始めのホワイトタイガーの攻撃力はです。
ホワイトタイガーは、現在の攻撃力が、モンスターの体力以上である時かつその時に限り、モンスターに攻撃することができます。また、モンスターに攻撃を行うと、そのモンスターは消滅し、さらに、ホワイトタイガーの攻撃力が、攻撃を行う前のホワイトタイガーの攻撃力を、攻撃したモンスターの体力をとしたとき、に変化します。ここで、はビットごとの排他的論理和を表します。ホワイトタイガーが上手くモンスターに攻撃する順序を決めたとき、最大で何体モンスターを倒せるでしょうか?

制約



これも、下に答えを載せておきます...ん?

掲載した問題の答え

一つ目の通過領域の問題から。

まあ、割と一発芸的な感じの問題です。

とおくことにします。条件での成立条件から、が成り立つので、結局で表せて、という形しかありえません。よって結局のところ、条件は、が全てので成り立つことです。

これは、としたときに、という条件と同値です。(と本当は書くべきなのですが、は有界閉区間上の連続関数ですから、最小値の定理から最小値をもち、特に と等しくなります。)これは高校数学の教科書に載っている通りの微分で求めることができます。結局のところ、が条件となり、求める領域は、です。これを図示するのは容易です。

東工大生なら流石にこれぐらいできるよね!()

続いて2つ目の競プロの問題です。

妙だな...と思った人もいるかもしれませんが...()

結論を先に述べると、ホワイトタイガーは、体力が小さいほうからモンスターに攻撃していけばよいです。実装上は、をソートして、小さいほうから順に倒せるなら倒し、倒せなくなったらそれ以上は倒せないとすればよいです。

以下では、この事実を証明したいと思います。以下では、ホワイトタイガーの現在の攻撃力をと書きます。ははじめです。
モンスターを、体力のMSB(最上位bit)で場合分けします。

MSBがのMSBより小さいモンスターについては、どれでも倒すことができます。(明らかに、これらのモンスターの体力はより小さいです。)特に、これらのモンスターのみをどれだけ倒しても、のMSBは変化しないので、これらのモンスターは全て倒すことができます。

MSBがより大きいモンスターについては、どうやっても倒すことができません。なぜなら、攻撃を行っても、のMSBは増加することが無いことがXORの性質からわかるからです。

MSBがと同じモンスターについては、倒せるかどうかはわかりません。が、これらのモンスターのうち高々1体しか倒すことができません。なぜなら、1体倒してしまうと、のMSBが必ず減少してしまうため、必ず攻撃力が体力を下回ってしまうためです。

以上から、答えがMSBがのMSB以下の体力のモンスターの数をとしたときに、以上でかつ以下であることがわかります。

これより、最適解のうち、MSBがより小さいモンスターを全て倒すようなものがあることが直ちにわかります。(最適解がだとしたら明らかですし、最適解がだとしたときも、MSBが小さいモンスターを体以下倒しているということは、他のモンスターを2体以上倒せないのであり得ません。)よって、MSBがより小さいモンスターを全て倒した後、MSBがと同じモンスターを1体倒せるか判定すればよいです。これは、単に残っている中で一番体力が小さいモンスターを倒せるかどうか考えればよいです。

XORが可換であることから、モンスターの体力が小さい順に倒していくことは、最適な倒し方のひとつです。

実装例は以下のようになります。

#include<bits/stdc++.h>
using namespace std;
using ll = long long;

int main(){
  ll n,b;
  cin >> n >> b;
  vector<ll> a(n);
  for(int i = 0; i < n; i++){
    cin >> a[i];
  }
  sort(a.begin(),a.end());
  int ans = 0;
  for(int i = 0; i < n; i++){
    if(b >= a[i]){
      b ^= a[i];
      ans++;
    }
    else{
      break;
    }
  }
  cout << ans << endl;
}

私が2番目の作り方をしない理由はこうなるからなんですよね()

追記

でこの解法は落ちることが判明しました、体調悪い中考えてたので許してください!!!落ちない解法を見つけたらまた追記します。

追追記

最強の友達に解いてもらいました。

#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
int main(){
  int n;
  ull a[200000],b;
  cin>>n>>b;
  for(int i=0;i<n;i++)
    cin>>a[i];
  int d=bit_width(b)-1;
  vector<ull>ltd,eqd;
  for(int i=0;i<n;i++){
    int tmp=bit_width(a[i])-1;
    if(tmp<d)
      ltd.push_back(a[i]);
    if(tmp==d)
      eqd.push_back(a[i]);
  }
  bool G[59][59];
  for(int i=0;i<d;i++)
    for(int j=0;j<d;j++)
      G[i][j]=i==j;
  for(int i=0;i<ltd.size();i++){
    b^=ltd[i];
    int tmp=bit_width(ltd[i])-1;
    for(int j=0;j<tmp;j++)
      if(~ltd[i]>>j&1)
        G[j][tmp]=1;
  }
  for(int k=0;k<d;k++)
    for(int i=0;i<d;i++)
      for(int j=0;j<d;j++)
        G[i][j]|=G[i][k]&&G[k][j];
  for(int i=0;i<eqd.size();i++){
    if(b^eqd[i]==0){
      cout<<ltd.size()+1<<endl;
      return 0;
    }
    int s=bit_width(b^eqd[i])-1;
    for(int j=s;j<d;j++){
      if(~eqd[i]>>j&1&&G[s][j]){
        cout<<ltd.size()+1<<endl;
        return 0;
      }
    }
  }
  cout<<ltd.size()<<endl;
}

すごい。

作問のメリット

作問のメリットはいっぱいあります。

1.コンテンツの理解度が上がる

問題を作るには、少なくともその問題の解法を理解する必要があります。まあ原案だけ出すのも手ですが。また、問題を作る過程を通じて、問題に解法を適用できる条件などの理解が深まります。

2.自分の問題を解いてもらえる

自分の問題を解いてもらうとわかるのですが、本当にうれしいです。ボコボコにされるとちょっと悲しいですが。

3.楽しい

単純に、問題を作るのは楽しいです。特に、私のやっているような数学っぽい問題で、きれいな問題を作れるとやっぱり興奮してしまいます。

作問のデメリット

もちろん、デメリットもいっぱいあります。

1.時間がかかる。

やってみるとわかると思いますが、作問は本当にありえないぐらい時間がかかります。

2.苦しい

先ほども述べたように作問は、本当に時間がかかるうえ、大体の時間は問題が全然できないし、できたと思っても解いてみたら自明問題、または想定解が壊れている不可能問題であることが結構あります。そういう時はやっぱり苦しいです。

3.苦しい

いっぱい時間を使っても何もできないと、本当に時間を無駄にした気分になって、自分の頭の悪さを痛感して、苦しくなります。

4.苦しイ

数々の没を乗り越えて、問題がようやくできたと思っても、問題を解かれるのにかかる時間は大体自分がかけた時間の10%にも満たないです。あレ、ぼくは縺ェ繧薙?縺溘a縺ォ題を縺、縺上▲縺ヲ縺?◆繧薙□...

5.クる縺励>

あははははははハハはハハはハ縺ゅ�縺ッはは縺ッハ縺ッはハ縺ッ縺ハはッ縺はッ縺ッ縺ッ繝上ワ繝上ワ繝上�繝上ははワ縺ッ縺はッ縺ッ縺ッはハハッ繝上は�繝上�ハ繝上�縺ッ縺ッ縺はッ縺ッ繝は上ワ縺ッ縺ッ繝上ハ�縺ッ縺ッ縺ッ繝上�縺ッ繝上�繝上�繝上ワ縺ッ繝上ワ繝上ワ繝は上ワハ上ハ�繝上�縺ッはは縺はッ繝上ワ縺ッ繝上ハハハハワ縺ッ繝上ワ縺ッ縺ッ繝上ははワハハ縺ッは縺ハハはッハハ縺ッハ縺ッ縺ッハハ繝上�繝上ワ縺ッハ縺ッは繝上は繝上はハ繝上�縺ッ繝は上ワは縺はッハは繝は上ハワ縺はッ縺は上�繝上ハ�繝上ははは上�繝上はははハワ縺ッ縺ははッ縺ッ繝は上ワ縺ッ繝ははワ縺ッ繝上�ハ繝は上はワ縺はッ繝上ワははハハ縺ハハはははは縺ッハ縺ッハ繝上ワ縺ッ縺ッ繝ハ上ハ�繝上�ハ繝上ハ�縺ッ繝上�繝上ワは縺ッ繝上�繝上ワ縺ッ繝上�繝ははははハワ縺ッ縺ッ繝上ワ縺ははッ繝上ワ縺ッ繝は上ワ縺ッ繝ハはハハ上�縺ハッは縺ッ繝上ワ繝上�繝上ワ縺ッハは上ワ縺ハッハ繝上�繝上�繝ハ上�縺ッ縺ッ縺ッ繝上ワ繝上�繝上�繝上ハ�繝上�繝上�縺ハッ繝上�繝上ワ縺ッ繝�ハハハはは縺ヲ繧√f縺代↑縺ゅ@縺上≠縺代?縺医⊇縺代?縺薙⊇縺ョ繧ゅ↓縺ヲ縺。繧?j縺倥¢縺ョ繧?縺オ繧上※繧√f縺代↑縺ゅ@縺上≠縺代?縺医∈縺輔@縺ヲ縺ク繧ゅ↑縺輔d縺輔↑縺輔?縺輔☆繧?∪縺ク縺オ繧上l縺輔?縺輔∴縺ク縺輔@縺ェ縺ゅ@縺ヲ縺オ繧上%縺医≠縺懊d縺オ縺オ繧?繧上↑縺薙⊇縺ョ縺昴o縺イ縺ク繧?j縺倥¢縺サ縺?&縺昴a縺ュ縺励↓縺ヲ縺帙∈縺昴>縺。縺?f縺ク繧√o縺代?縺輔¥縺ク縺輔?繧九?繧?縺ュ縺ヲ繧翫?繧後★縺昴↑縺。繧ゅ⊇縺輔éíðïòô òáîäïíŠæòïí Ãòùðôï®Õôéì®îõíâåò éíðïòô çåôÐòéíå¬ éóÐòéíå¬ âùôåóßôïßìïîçŠî ½ òáîäïí®òáîäéîô¨±¬µ°°°°°°°©Šð ½ ¨±°ªªî ­ ±© ¯¯ ¹Šáóóåòô éóÐòéíå¨ð©Šñ ½ çåôÐòéí娴°¹¶©ŠÎ ½ ð ª ñŠå ½ °ø±°°°±Šðìáéîôåøô ½ éîô¨éîðõô¨©©Ší ½ âùôåóßôïßìïîç¨ðìáéîôåøô©Šã ½ ðï÷¨í¬ å¬ Î©Šðòéîô¨¢Î ½¢¬ يðòéîô¨¢ã ½¢¬ 㩊Π½Š···²±³±±±±¸²¹µ°²³¶µ¹¹¸··¹·¶±´µ¸´¸¶¹¸µ²³±¶²´´·°¸´·µ±°¶´±µ¹´¸²°µ°³¸±´¹·±²°¶¹¸¶µ¸¹°¹·°²¶±¹´²¸µ¶¶²´µ±·³µ·²²°³²¶¶¹°¶²±¶³²³°´µ·µ³³³³¹³·°³¹±²¹¶³³±·¶µ´²´´·´³µ±³±±¶¹¸´µ¶¹³°µ´±°³¹²··´µ¹·°³¸·°±±´¸´²µ¸·µ°²±´¶´°°³°·±²³±¹³´¹²´³·°¸¸µ±µ³²²·´°¸±²µ¸µ°°·²µ¹¹µ±´µ¸¹²µ°·¸³²¶·²¶·°´¹¸±³´±µ³µ±³¸²µ´¹¸¸µ¸¹°¶¹±·±³¹µ·°¸µ·¶²²°·¹³··³°²´µ´¹¸¶³°¹³¹³³´±²·±²¹¹·´²±´³²±´´²´²·¹µ³µ·²°¸µ°²³´²´·¹²³°¸µ°·¶±´±·³·¶²¹·¶µ¶³¹¸¸´·¹··¶¶µ¶¸µ±°´µ¶²³°´¸°³·¶¹°¶°¸¹µ¹²¹³´¹²¸¸±µ±¸³²´±µ¸°³³·²·±¶¹´°¹µ¶¹¸´µ¹¶±¸°·°³·¹²·´´³·¶¸²¹²¸±±·±µ°¶´¸°¸¶¹·¸¹±²µ¹¹µ°³¶²µµ°µ·¸³¶°¸³°µ±¹¸´¶¸°³²¸·µ·±´´³±±²°°´µ´¹³´¶µµµ¸°²°±°·¸¹µ³³·³³µ·´·°¹µ±¶¶±¶±¹·µ´¶¸´¶¸¶±µµ¹·¸°¶¹²³¶°´²¶±µ±·°³±µ±²··µ¹±´°¹µ³²¸³²±´°²°´±³´¶¸°³±¸µ¶¹µ°¸²²²³²´¸±µ°¶µ¶¸±²¶³³¶´²³´¶¹µ¹¸¸¸²¶¶¶µµ¸²²²³¹¶°²°´¹°µ¹·³¹µ²·±²·¶¸³²¹¸¸´±³¶´¶µ¸¹´···¹³´³³²±³±³±³³³·¹¹¸µ±´¸¶¸¸µ±°·°²µ·±µ´´¹²µµ¹³²²µ··²¹°´°±¸¹²±µµ·²¹¸¶°±³µ°·¶¶·¹¸µ±¸±¹²µ°²µ³³³¹²·²¶¹²¸¶··³³·³³µ¹¸¸±¶´¸µ¸±¸²´²µ·¹·±±´´´´°²³¹³³¸·¸²³³±·°·°¶µ´¸°²´±¶¶°¸±·¸³¹·±¸¹µ±¶±´µ¸°µ¸·²¶¸·¹²µ¸¸¸´´±¸²·°·¸¹²¶´³³¸±¶±¹°¶µ±±°·µ²µ³¹°¹´¸µ±¸´¸°µ·µ·¸¹´²´°·¸´±´¶·°¸°´¹³·¹·²°³¹³±·°³³¸¹±¶¸³¸°µ¶·³°¶°°±¸°¶µ¶²²²·¶²µ°´¶¹³¹·±¹µ¸¸´¸¶±³¹²°³°¹¸°¹µ²·²µ¸¸µ¸·µ´¶¸³¹µ¸¸¶¹³±µ²¹µ±¹¹µ¹³¶¹²¶±¸²¶µ¹·°´³²°´¸´µ·²¸²µµ³²··±¸¸·±°·±±¸±´²´¸±´·¹·µ´¹µ¹¶³¶¹´°°¹¶µµµ··¶¸·°±±¶°¶±µ±°°¹´³¸¶¶¸µ³¸´µ¹¸²´±°¶¹µµ´´µ¹µ±±¶¸¹¶°¶¸·¸±°±¹°¹´²°¶¹¶¸µ³¶¸³´±°µ°²¶°·¹¸¸¶¸³°´°°´¹´°··¶¹¶°´´·µ¸°³±°²°·¸²¶°±¶¶²²²·µµ²¶°µ¶¸±¹±··³±¸µ¹¹·³´µ°±²±´··¹·°¸³¸³·¹²±¶µ¶¶¹±±±¹±°±²´²µ¶¸·µ¶·µ´´¸·¶¶·³°¸µ²²··³´¶¸´¶¹±±¹µ´µ¸¶¸²²¹¹¶¶¶¸µ²µ¹µµ¶¹³²°°µ³·µ´±³·±¶µ¹¹¸°²¹´³¶¸·²µ°²¹´³°°³¸°°µµ³¶°·´µ±°µ·¹´µ¹³³·´µ±µ±¹°¸·µ¸²¸··³·¶¶±´¸±´µ¸±°¹³·¹·¶°¶µ¹¶°±³²´¸¸¶´¹µ²³µ·µµ¶°µ·µ¶¸¸·°±°°²¶¸¸µ¹¸¹µ·¸²³¶°²¶´¸¹²·´µ¹±µµ³¶³°³±°¹´¸µ±Šã ½Š²¹´³³µ¶±³³¶³±²³±·¶³±¶¶°°¸²´¹°°°¶¹¸°µµ¸³±µ¶µ¹°¸²·¸°·²³·³·¸°µ²·¸·¸³²µ²¸³±¹·´°µ¸³·µ¶µ¶µ´´¸³¸µ±´²¶²·±¸±¸±¹¶¹¸·²µ¸¶³³°·´¸´¶°²°³³·¸±³¸³µµ±µ¶±¸±¶±¶³°µ²´µ´´¶µ³µ²³²°·°²³²´¸²³¹¹µ¶¸°¹¹µ¶°··³¸±±³µ¸²³¹°±µ¶¹´·¸·¸²¶²²°±¸´´´´´¶³µ²³¹µ·²µ²´³±¸¹±¸³·³¸°´¸³·±¹°³¹µ²¹·¸´¶¹¹°µ¸¸²¶²·´¹µ°¶¹±µ¹µ²²¶·´±µ¸²´²¹µµ´¹³¸²´°±·¸±µ¸°°²·²µµµ³´¹±¹¹³¶²°¹··´¸³¹°µ¸±²±°´µ±¸²¹¶³µ±±°µ¶²·³±°²±¸³µ¹´¹¸°¶°·µµµ¹³µ³¸¸¹²¶³±¶µ¹¸°²µ³´±·´°²²³²¹°¸±°³³±¹µ¶·¹¹¸¸¹´µ´¸±¶¸±¹·´¸·±²·²¹²¸µ²µ¸µ²¹µ±³µ¸°¹µµ¶´¸²¶±¹·´´¸¶¶±¹¸·¶°´¸¶±°¶³¹µ¹µ¶±¶¹´¸·¸¹´°¹µ±²°·¶µ³±¶³·°¹°¶°³¶±±³·´µ·±¸¶¹¹±¶¶µ¹¹¶±³¸¹²·µ±±³³³°´·¸²²±·´¹¶´¶·¶¸´³°°´³·³µ±²³¸¸³±¸·°³¶±²¶·³¶±¸°±¸µ¹¹¹µ¸´¸µ²¸¸¸³¸³´´¸´¸³´¹µ²¹¸·µ³µ±µ¶¶µ·µ¹´°¸±µ°´µ·°·¸·¶±¹·±³²±±±³³µ±°µ·¹¸·°±°±°¸²¶³¹µµ·³³°±¶±±³µ±·¸´²±´¸¸´²±µ¹¸±¶°³´·µµ¹·¸´²¸³²¶³·µ·°¹°´°´±³¹·²¸´¹±¶±·°¸¹²²¶¸¶°±³±²¶¹°¸¸·³²µ¸·³¹°µ°³¸·¶¹µ°±±´¶³±¶³¶¶²´µ°²¹²´·µ°¶±¸±¹¶µ°²°²¹¹´´´¹²±²¹µµ²²´´¶·³³°¶°±¹´µ³³¹±¶·³±±¹²¹µ´³µµ¶¹¹µ±¸·¹µµµ±¹²²³°¸µ¸±²·±°³°¹±³²¹³µ¶¶±³³¹±¸¸³¶µ¸·¶³²³°µµ´¸µµ±²¶³°·²±³¶¸¸·±·¹·µ´¹¹¶¹³¶¹¹³±°¶´·¶±±³¶°²¶²µ±¹±·¸´¹±µ·³µ±¸´³¶´¶´µ¶·²¸°°²±¹¶³³²··±¹³´¹´µ·¶±¶µ¶±°¹¶´´±´³¸µ¶¸´¶¸··±´µ°¹¸°±°²¶µ·´°·³¹¶¹±±²¸··²¸²µ´¹´´°°´¹¹³µ¸°±¶³²³´¹¸°¹¹³¸°·µ·µµ¶¶¸µµµ¶··±·¶µ°±±´´³°¸²´´·°µµ¶¹·±³°³¸³²¶¹±¶²²³²¹·´·¶°¶¸¶¶´¸µ¶¸±¹°°°°¹·²°¸¹²µ·°±¶´²°¹¸¶¹´³µ´¹°¹²²´²¹³¶¶¶·²µ°¹±¹··µ·¸¹°¶´µ¹µ³²µ¶¸¹·¸µ¸³¸²´²´µµ¸²·´µ¶´±·¸²²³²±³³·±°··²¸µ³¹±´¶¹µ´¹·²¸´³·µ°¸±°±·³µ³³±´µ²¸¹µ¸°´±°¶±²¸¸´²³³·²´¹³µ²²±´²¶±µ¸±°¶±³¹´´¸µ²±¸³¹¸±°µ¶±µ³´´·¸µ·±²¹··°·´±±µ±´²¸²°´²±±¶·¶¸²¹¸²¹µ²·³´³¶¹´¶µ´³·¶¸±²³·¹²¹³´±³¶µ¹±¶°µ·³°±µ²²·³¹´±°²±°¹¶¶¶¸²²±³³¹µ·µ´±°²²µ±¸µ··¶°¸²¹±´¸¶¹³¸¸¹°·±·°¸¸¶°±¹µ¶¸·°°´¶°¹³µ¹·µµ·¸¸±°±µ¸´´µ´¸³µ²³°·µ±·±²´²°²´´±°·³´´±·³·°µµ³´µ¸¶´¶¸³°·¹¹¸¸¹¸²¶²¹¸¹¸±¶³±·

Naru820 icon
この記事を書いた人
Naru820

アルゴとグラ

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2025年3月16日
しくじり引っ越し俺みたいになるな!!
vPhos icon vPhos
2025年3月9日
# WOLF RPGエディターについて
Synori icon Synori
2025年3月15日
PyTorchで爆速レイトレーシング
Luke256 icon Luke256
2025年3月12日
サークル旅行のためだけにアプリをこしらえる人たち
kitsne icon kitsne
2025年3月7日
新歓特設ページを公開しました!【新歓ブログリレー1日目】
Luke256 icon Luke256
2025年3月17日
【traP部員に聞いた!】学割が効くもの集
cp20 icon cp20
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記