辞書型配列【DNCL拡張版の話】

配列またはリストと呼ばれるデータ形式のことは、既に学習してきました。

例えば Hi=[ 10, 20, 30 ] という配列だとすれば、Hi[ 0 ] が 10、Hi[ 1 ] が 20、Hi[ 2 ] が 30 を表します。
[ … ]の中の 0, 1, 2 が、何番目の要素であるかを表す 添字(インデクス)です。

いわば配列とは添字という番号 0, 1, 2 (0番から始めます。注意!) に対して 値(10, 20, 30 など)を対応させるもの だといえます。

DNCL 普通の配列で対応づけ
関数定義 レート( tuuka_in ):
# 2つの配列(要素数同じ!)を用意する
Tuuka = ["米ドル","ユーロ","ポンド","豪ドル"]
Kawase = [143, 155, 186, 95]
i0から3まで1ずつ増やしながら繰り返す:
もしTuuka[i]==tuuka_in ならば:
soeji_in = i #その添字をセット
戻り値( Kawase[soeji_in] )
表示する(50 * レート( "ユーロ" ))

のように記述するところを

Tuuka = [“米ドル”,”ユーロ”,”ポンド”,”豪ドル”]
Kawase = [143, 155, 186, 95]
DNCX 辞書型配列と一般列挙
関数定義 レート( tuuka_in ):
# 通貨→為替 対応の 辞書型配列
T_K_taiou= {"米ドル":143 ,"ユーロ":155 ,"ポンド":186 ,"豪ドル":95 }
# T_K_taiou["米ドル"] は 143 , ... のようになる!
sT_K_taiou.キー集合() から順次出しながら繰り返す:
もし s==tuuka_in ならば:
戻り値( T_K_taiou[s] )
戻り値(1) #キーになかった場合
表示する(50 * レート( "ユーロ" ))

のように記すことができます。

config.yaml
key: value

その場合、

OUT_RESULT
[0, 2, 4, 6, 8]
Done in 0.123s

注意点ですが、

★ 辞書式配列の書き方

{ キー1 : 値1 , キー2 : 値2 , \( \dotsm \) , キーN : 値N }

ここが とても大事 です。


$$ \displaystyle \int_a^b f(x)\,dx $$
DNCL それぞれの探索実装
Data=[12,21,26,35,44,50,62,75,83,90]
item_in = 整数値(【外部からの入力】)
#線形探索
mitskatta=
iを0から 要素数(Data)-1まで1ずつ増やしながら繰り返す:
もし Data[i]==item_in ならば:
表示する("[線形探索]: 入力値",item_in,"は添字",i,"番目に見つかった")
mitskatta=
ループを抜ける
もし not mitskatta ならば:
表示する("[線形探索]: 入力値",item_in,"は見つかりませんでした")
#二分探索
関数定義 一回分の探索結果(l, r, test_item):
m = 整数値( (l+r)/2 )
もし test_item == Data[m] ならば:
戻り値(, m, m)
もし test_item < Data[m] ならば:
戻り値 (, l, m-1)
そうでなければ: #test_Arr[m]<test_item
戻り値(, m+1, r)
l, r = 0, 要素数(Data)-1
kaisu = 1
ずっと繰り返す:
#戻り値は一つの配列に詰めて帰ってくる:
res_Hi = 一回分の探索結果(l, r, item_in)
is_centerleft = res_Hi[0]
l, r = res_Hi[1], res_Hi[2]
もし is_centerleft ならば: # l=r=m
表示する("[二分探索]: 入力値",item_in,"は添字",l,"番目に見つかった")
ループを抜ける
もし l > r ならば: #データにない値を探させるとなる。
表示する([二分探索]: 入力値”,item_in,”は見つかりませんでした”)
ループを抜ける
表示する("[二分ログ]: ",kaisu,"回目。入力値のありかは",l,"番目から",r,"番目に絞れる")
kaisu=kaisu+1

最初のコメントをしよう

必須
SNSへの投稿はこちら