Scratch 2分探索法課題3
課題内容
スペースキーでリストを2分探索法を用いて探索
解答
解答を表示する
背景
変更①変更②変更③
定義 変数初期化
↓↓↓↓↓
定義 変数初期化 [上 v]を(1)にする [下 v]を([リスト v]の長さ::list)にする [結果 v]を(0)にする
定義 探索値入力
↓↓↓↓↓
定義 探索値入力 [探す値を入力してください。]と聞いて待つ [探索値 v]を(答え)にする
定義 2分探索
↓↓↓↓↓
定義 2分探索 <(上)>(下)>まで繰り返す [選択場所 v]を((((上)+(下))/(2))の[切り下げ v]::operators)にする [選択値 v]を([リスト v]の(選択場所)番目)にする もし<(探索値)=(選択値)>なら [結果 v]を(選択場所)にする [このスクリプトを止める v] でなければ もし<(探索値)<(選択値)>なら [下 v]を((選択場所)-(1))にする でなければ [上 v]を((選択場所)+(1))にする end end end
解説
解説を表示する
背景
変更①変更②変更③
定義 変数初期化
定義「変数初期化」が呼び出されたとき、スクリプトを開始する
[上 v]を(1)にする [下 v]を([リスト v]の長さ::list)にする [結果 v]を(0)にする
変数の初期設定
定義 探索値入力
定義「探索値入力」が呼び出されたとき、スクリプトを開始する
[探す値を入力してください。]と聞いて待つ [探索値 v]を(答え)にする
キーボードから入力した数値を変数「探索値」に格納する
定義 2分探索
定義「2分探索」が呼び出されたとき、スクリプトを開始する
<(上)>(下)>まで繰り返す end
変数「上」が変数「下」より大きくなるまで回繰り返す
[選択場所 v]を((((上)+(下))/(2))の[切り下げ v]::operators)にする [選択値 v]を([リスト v]の(選択場所)番目)にする
変数「選択場所」を変数「上」が変数「下」の真ん中の位置にする
変数「選択値」にリストの変数「選択場所」番目の要素を格納する
もし<(探索値)=(選択値)>なら [結果 v]を(選択場所)にする [このスクリプトを止める v] end
変数「探索値」と変数「選択値」が等しいなら変数「結果」に変数「選択場所」を格納して、終了する
もし<(探索値)<(選択値)>なら [下 v]を((選択場所)-(1))にする でなければ [上 v]を((選択場所)+(1))にする
変数「探索値」と変数「選択値」の大小関係によって変数「上」または変数「下」を変更する