ロゴ ロゴ

【新歓ブログリレー】プログラミングをもっと真剣にやってみませんか?

なんで?

コンピュータが発明された以来,情報を得るためにどんどん苦労しなくてもいいようになった。「最適策」を求め続けていたプログラマーたちのおかげで,日本の真反対にいるアメリカの人と0.2秒以内の遅延で通話ができたのだ。この社会のために働くのなら,「最適策」を考えるに慣れている頭で考えた方がいいと思いませんか?

なにをすればいい?

プログラミングをやればやるほど脳が鍛えるのが確かだが,数学と同じように勉強する必要がある。
Atcoder,Leetcode,参考書,自分に合った方で進めばいいです。
ただし,コンテストの成績だけではなく,アルゴリズムの数学的原理も理解できるようにしましょう。

自分からのおすすめ

自分のお世話になったのは,一冊英文の参考書。初心者向けではないが,ググってから読むといいと思う。
リンク:https://drive.google.com/file/d/1LGDXxaK-I1FBWh6lZ0Fs_F8H8ilhuyw6/view?usp=sharing

ちょっとした例

紹介した参考書に載っている例。
{1,2,3}の可能な組み合わせ数は3!=6ですが,組み合わせ自体はどうやって表すのか?
123,132,213 …を考えるのに時間がかかるし,書くにも時間がかかる。このとき,もっと知っている方が楽です。C++のnext_permutationを使えば,簡単にできる。

#include <bits/stdc++.h>
using namespace std;
int main(){
    vector<int> vec = {1,2,3};
    sort(vec.begin(),vec.end());
    do{
        for(int &each:vec)
            cout << each << ' ';
        cout << '\n';
    }while(next_permutation(vec.begin(),vec.end()));
    return 0;
}
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

残りは,自分でnext_permutationはどうやって働いているのかを調べることだけだ。

競技プログラミングとか以外に

基礎を築くと,欲望と想像力に任せる。
大したことではないが,ディスコードのボットをいくつか作ったことがある。また,他のサークルに生かしたこともある。
毎日の朝にNew York Timesのニュースをディスコードで読むとか,コマンドでファイルをグーグルドライブにアップロードするとか,従来の方法より便利わけでもないが,面白いものを作るのが楽しいではないか。

コメント入力

関連サイト