【新歓ブログリレー】プログラミングをもっと真剣にやってみませんか?
なんで?
コンピュータが発明された以来,情報を得るためにどんどん苦労しなくてもいいようになった。「最適策」を求め続けていたプログラマーたちのおかげで,日本の真反対にいるアメリカの人と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のニュースをディスコードで読むとか,コマンドでファイルをグーグルドライブにアップロードするとか,従来の方法より便利わけでもないが,面白いものを作るのが楽しいではないか。
コメント入力