よく聞くんですけど、「アルゴリズム」って何ですか?

記事
IT・テクノロジー
ひさしぶりに再投稿します。バケツの問題のアルゴリズムを付け加えました。

プログラミングの学習をしていると、必ず「アルゴリズム」という言葉を見たり、耳にする事はよくあると思います。

例えば

2月の最終日が28日ではなく29日になる年を「うるう年」といいますが、
これは1年の日数を365日で単純に何年も累計していくとズレ(これをユリウス暦の問題点と呼び、平均で0.25日/年が少なくなります)が生じて来ます。それを是正して(調整して)くれるのが「うるう年」の年間で366日です。
でも西暦何年が「うるう年」にあたるのか?が意外と単純ではないんですね。

それでは、あなたへ「うるう年になる年数の出し方を説明してください。」と質問がされた時に、どのように答えますか?

正解は、
『西暦の年号が4で割り切れる年はうるう年としますが、例外として100で割り切れて400で割り切れない年は平年とします。』
この条件が揃った時に「うるう年」と言えるんですね!

西暦2000年は、4でも100でも割り切れるため原則では「平年」にあたりますが、400でも割り切れるので 2000年は「うるう年」でした。
一方で1900年や2100年などは、4でも100でも割り切れるものの400では割り切れないので、「平年」になります。

では2400年は、どちらでしょうか?

正確な年月日を必要とするアプリケーションは、身の回りにたくさん存在します。もし「うるう年」がきちんと正確に計算できないと、とんでもないクズなアプリケーションになってしまいます。
これが「アルゴリズム」ですね。

でも、安心してください。昔と違って現在は正確にうるう年を計算する機能は、どのプログラム言語にも備わっています。
では、次の問題です。

人質をとった犯人からの指示で「3リットルと5リットルのバケツが1つづつあり、この2つのバケツだけを使って正確に4リットルの水を計測し、バケツに入った正確な4リットル分の水をある指定された場所に置かないと・・・・・大爆発!?
ある有名なアメリカ映画の一シーンですね。でも単位は確か「ガロン」でした。
皆さんは映画の主人公のように、正確に4リットルの水を計測して事件を未然に防げるでしょうか?
これは「アルゴリズム」です。

正解の1例は、

1. 5リットルのバケツに水を満タンの5リットル入れます
2. それを溢さない様に3リットルのバケツに入れて、5リットルのバケツに2リットル分を残します 
3. その2リットル分を溢さない様に、空した3リットルバケツにいれます
4. 5リットルバケツをまた満タン5リットルにして2リットル入ってる3リットルバケツに溢れないように注いだら、5リットルバケツに「4リットルの水」が残ります。


「プログラミング」は、「アルゴリズム」をコード化(文法で記述する)する事を指しています。言語の種類には関係ありません。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す