Python初心者ですが、アルゴリズムの理解を深めたいと思い、数学ガール乱択アルゴリズムに書かれている擬似コードを実装してみようと思いました。
アルゴリズム(リニアサーチ)
今回のアルゴリズムは、並んだ数字の中に26が存在するかどうかを判別するというものです。
自己学習のために、擬似コードをアレンジして下記のような関数に仕上げました。
ちなみにリニアサーチとは、何かというと、探し物をするアルゴリズムの一つで、数列の中に、特定の数が存在するかどうかを順番に探す方法と、記載されています。
コード
関数名を定義して、引数の受け取りを設定します。
ここでは関数名をis_there_numとして、引数をvとしています。
def is_there_num(v):
リストに数値データを入れています。
list = [31,41,59,26,53]
擬似コードに存在する変数ですが、アレンジしたため必要がなくなった変数をコメントアウトしています。
# k=1
for文を使用して、listから並び番号と数値を取得しています。
for i, num in enumerate(list):
もし、取得した数値の値と引数の値が一致した場合、並び順番号と数値と共に、「見つかった」という文字列を返します。
if v == num:
return(i, num, “見つかった”)
探している数値が見つかった場合は、breakでfor文を抜けています。
break
引数で受け取った数値が、見つからない場合は「見つからない」と表示させます。
else:
print(“見つからない”)
関数に引数26を指定して、実行しています。
print(is_there_num(26))
実行コマンドは、ターミナルで次のように打っています。
$ python3 sgirl_1.py
実行結果は、下記のようになりました。
見つからない
見つからない
見つからない
(3, 26, ‘見つかった’)
並び順番号が3と表示されているのは、カウント開始が0から始まるためです。
実際には、リストの中の4番目に26があるということです。
コードは下記の通りです。
def is_there_num(v): list = [31,41,59,26,53] # k=1 for i, num in enumerate(list): if v == num: return(i, num, "見つかった") break else: print("見つからない") print(is_there_num(26))